AbstractFactory模式
来源:互联网 发布:正在连接到csgo网络 编辑:程序博客网 时间:2024/05/22 16:43
抽象工厂模式,代码比较简洁。
Product.h
//Product.h#ifndef _PRODUCT_H_#define _PRODUCT_H_class AbstractProductA{public:AbstractProductA();virtual ~AbstractProductA();};class ProductA1 : public AbstractProductA{public:ProductA1();virtual ~ProductA1();};class ProductA2 : public AbstractProductA{public:ProductA2();virtual ~ProductA2();};/*==================================*/class AbstractProductB{public:AbstractProductB();virtual ~AbstractProductB();};class ProductB1 : public AbstractProductB{public:ProductB1();~ProductB1();};class ProductB2 : public AbstractProductB{public:ProductB2();~ProductB2();};#endif
Product.cpp
#include "Product.h"#include "iostream"using namespace std;AbstractProductA::AbstractProductA(){}AbstractProductA::~AbstractProductA(){}ProductA1::ProductA1(){cout<<"ProductA1"<<endl;}ProductA1::~ProductA1(){cout<<"~ProductA1"<<endl;}ProductA2::ProductA2(){cout<<"ProductA2"<<endl;}ProductA2::~ProductA2(){cout<<"~ProductA2"<<endl;}/*=====================================*/AbstractProductB::AbstractProductB(){}AbstractProductB::~AbstractProductB(){}ProductB1::ProductB1(){cout<<"ProductB1"<<endl;}ProductB1::~ProductB1(){cout<<"~ProductB1"<<endl;}ProductB2::ProductB2(){cout<<"ProductB2"<<endl;}ProductB2::~ProductB2(){cout<<"ProductB2"<<endl;}AbstractFactory.h
//AbstractFactory.h#ifndef _ABSTRACTFACTORY_H_H#define _ABSTRACTFACTORY_H_H#include "Product.h"class AbstractFacroty{public:virtual ~AbstractFacroty();AbstractFacroty() ;virtual AbstractProductA * CreateProductA() = 0;virtual AbstractProductB * CreateProductB() = 0;};class ConcretFactory1 : public AbstractFacroty{public:ConcretFactory1();~ConcretFactory1();virtual AbstractProductA * CreateProductA();virtual AbstractProductB * CreateProductB();};class ConcretFactory2 : public AbstractFacroty{ConcretFactory2();~ConcretFactory2();virtual AbstractProductA * CreateProductA();virtual AbstractProductB * CreateProductB();};#endifAbstractFactory.cpp
//AbstractFactory.cpp#include "Product.h"#include "AbstractFactory.h"AbstractFacroty::AbstractFacroty(){}AbstractFacroty::~AbstractFacroty(){}ConcretFactory1::ConcretFactory1(){}ConcretFactory1::~ConcretFactory1(){}ConcretFactory2::ConcretFactory2(){}ConcretFactory2::~ConcretFactory2(){}AbstractProductA * ConcretFactory1::CreateProductA(){return new ProductA1();}AbstractProductA * ConcretFactory2::CreateProductA(){return new ProductA2();}AbstractProductB * ConcretFactory1::CreateProductB(){return new ProductB1();}AbstractProductB * ConcretFactory2::CreateProductB(){return new ProductB2();}app.cpp
#include "AbstractFactory.h"int main(){AbstractFacroty * fac = new ConcretFactory1();delete fac->CreateProductA();delete fac->CreateProductB();return 0;}
怎么感觉同样的代码,C++的愣是比java的多这么多呢。。
抽象工厂模式为一组相关的类提供对象创建的接口,而工厂方法只是为一类对象封装了对象的创建。所以,如果对于存在大量统一类对象的系统,应该优先使用工厂方法,而对于存在大量复杂对象的系统,应使用抽象工厂方法。
他们有一个共同点是"将对象的实例化延迟到子类中实现",对于这点,我觉得自己现在还没有理解到。
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory 模式
- 设计模式之 abstractfactory
- python实现AbstractFactory模式
- AbstractFactory抽象工厂模式
- AbstractFactory抽象工厂模式
- C++ Factory & AbstractFactory 模式
- AbstractFactory模式讲解
- 设计模式之AbstractFactory
- 设计模式-AbstractFactory
- AbstractFactory抽象工厂模式
- 抽象工厂模式 AbstractFactory
- 设计模式(1) AbstractFactory
- c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库
- hdu 1753 大明A+B
- 优秀的UI设计技巧
- recv()函数有关返回值
- arm-linux之uboot向内核传递参数
- AbstractFactory模式
- TCP/IP协议栈的基本工作原理
- 第5章 泛型
- C语言运算符优先级总结
- CORBA
- 【算法王道】二叉树的遍历
- ACM学习规划
- 第3.1.5节 防止程序无响应的ANR
- c++ The compile error : unresolved overloaded funciton type