抽象工厂模式

抽象工厂针对产品族,不针对产品等级结构

产品族:同一产地同一个厂商,功能不同。

产品等级结构:功能相同,但是产地和厂商不同。

class AbstractApple
{
public:virtual void showName() = 0;
};
class ChApple : public AbstractApple
{
public:virtual void showName(){cout << "Ch Apple." << endl;}
};
class USAApple : public AbstractApple
{
public:virtual void showName(){cout << "USA Apple." << endl;}
};
class JpApple : public AbstractApple
{
public:virtual void showName(){cout << "Jp Apple." << endl;}
};class AbstractBanana
{
public:virtual void showName() = 0;
};
class ChBanana : public AbstractBanana
{
public:virtual void showName(){cout << "Ch Banana." << endl;}
};
class USABanana : public AbstractBanana
{
public:virtual void showName(){cout << "USA Banana." << endl;}
};
class JpBanana : public AbstractBanana
{
public:virtual void showName(){cout << "Jp Banana." << endl;}
};
class AbstractPear
{
public:virtual void showName() = 0;
};
class ChPear : public AbstractPear
{
public:virtual void showName(){cout << "Ch Pear." << endl;}
};
class USAPear : public AbstractPear
{
public:virtual void showName(){cout << "USA Banana." << endl;}
};class JpPear : public AbstractPear
{
public:virtual void showName(){cout << "Jp Pear." << endl;}
};class AbstractFactory
{
public:virtual AbstractApple* createApple() = 0;virtual AbstractBanana* createBanana() = 0;virtual AbstractPear* createPear() = 0;
};class ChFactory : AbstractFactory
{
public:virtual AbstractApple* createApple(){return new ChApple();}virtual AbstractBanana* createBanana(){return new ChBanana();}virtual AbstractPear* createPear(){return new ChPear();}
};
class USAFactory : AbstractFactory
{
public:virtual AbstractApple* createApple(){return new USAApple();}virtual AbstractBanana* createBanana(){return new USABanana();}virtual AbstractPear* createPear(){return new USAPear();}
};
class JpFactory : AbstractFactory
{
public:virtual AbstractApple* createApple(){return new JpApple();}virtual AbstractBanana* createBanana(){return new JpBanana();}virtual AbstractPear* createPear(){return new JpPear();}
};

转载于:https://www.cnblogs.com/immjc/p/9120830.html

[Design Pattern] 抽象工厂模式相关推荐

  1. 进阶学习(3.3) Abstract Factory Pattern 抽象工厂模式

    1, 抽象工厂模式的定义 简单工厂:   将具象操作下放到具象类 工厂方法模式:   将类的创建交给了具象工厂, 调用方法生产不同对象 抽象工厂模式: 对产品版本进行划分,  所有的具象工厂都是实现了 ...

  2. 抽象工厂模式-Abstract Factory Pattern

    抽象工厂模式-Abstract Factory Pattern 抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类.抽 ...

  3. 【design pattern】工厂方法模式和抽象工厂模式

    前言 设计模式分为三大类: 创建型模式:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式: 结构型模式:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式: 行为型模式 ...

  4. Net设计模式之抽象工厂模式(Abstract Factory Pattern)(1)

    一.抽象工厂模式简介(Bref Introduction) 抽象工厂模式(Abstract Factory Pattern),提供一个创建一系列相关或者相互依赖对象的接口,而无需制定他们的具体类.优点 ...

  5. 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)

    原文:乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Facto ...

  6. 设计模式(3):抽象工厂模式(Abstract Factory Pattern)

    1.继续工厂方法模式 在工厂方法模式中,介绍了一个工厂类创建一中产品,所有的工厂类都是基于接口实现的,所有的产品也是基于接口实现的.这样当增加新的产品的时候只需要实现新的工厂类和新的产品类即可,满足了 ...

  7. 设计模式(6)——抽象工厂模式(Abstract Factory Pattern,创建型)

    1.概述 使用设计模式可以提高代码的可复用性.可扩充性和可维护性.抽象工厂模式(Abstract Factory Pattern)属于创建型模式,为创建一组相关或者相互依赖的对象(产品族)提供一个抽象 ...

  8. 抽象工厂模式 Abstract Factory Pattern

    源地址 抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建 ...

  9. 设计模式 - 抽象工厂模式(abstract factory pattern) 详解

    抽象工厂模式(abstract factory pattern) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/270916 ...

最新文章

  1. resttemplate 文件上传 上传文件
  2. python灰度共生矩阵_四:利用python的skimage计算灰度共生矩阵
  3. 网络推广专员浅析网络推广期间网站收录如何提升?
  4. python中文读音ndarray-numpy中的ndarray方法和属性详解
  5. Effective C++ ——让自己习惯C++
  6. Mac下,如何把项目托管到Github上(Github Desktop的使用)
  7. php程序如何加密(php_screw)
  8. [教程]Tensorflow + win10 + CPU + Python3.6+ 安装教程
  9. c int最小值的宏_20个成熟软件中常用的宏定义,赶快收藏!
  10. selenium报错 : WebDriverException: ‘chromedriver‘ executable needs to be in PATH解决方案
  11. Java设计模式之适配器模式详解
  12. 联想服务器如何恢复预装系统,Thinkcentre E73 E63z等预装Win7系统如何恢复出厂系统...
  13. 2.1 新版个人所得税计算
  14. java协同过滤算法的演唱会门票售票系统
  15. caffe.net matlab,【caffe-Windows】微软官方caffe之 matlab接口配置
  16. session取不到的原因_游戏id不会取?来看看职业选手是如何取id的!满满的干货哦。...
  17. JDK的安装与配置(windows环境)
  18. 利用签协议机会,字节跳动90后员工内幕交易
  19. 使用python对文件夹里的所有表格合并且去重
  20. 前端-01-编写简单的导航栏

热门文章

  1. Java的包裹wrap
  2. 多线程Socket的InputStream的困扰一天才解决的问题
  3. Redisson--------基础入门
  4. kibana7.x操作
  5. JVM_03 运行时数据区 [ 虚拟机栈 ]
  6. 操作系统(三十三)内存管理
  7. MQTT再学习 -- 漫谈MQTT协议
  8. 区块链共识算法Proof-of-Stake (PoS/权益证明) 常见问题解答 (1)
  9. Creating a Java VM from Android Native Code
  10. Arm64中的异常处理