抽象工厂模式

2023-05-16

抽象工厂模式针对的是对产品族,而不是产品等级结构。
产品族: 同一厂商生产的产品。
产品等级: 同一产品,不同厂商的产品。

比如水果类里面由苹果和香蕉,水果就是产品族,苹果香蕉就是产品等级。

// 抽象苹果   产品等级
class AbstractApple
{
public:
	virtual void showName() = 0;
};
// 中国苹果
class ChinaApple : public AbstractApple
{
public:
	virtual void showName() {
		cout << "中国苹果" << endl;
	}
};
// 美国苹果
class USAApple : public AbstractApple
{
public:
	virtual void showName() {
		cout << "美国苹果" << endl;
	}
};
// 日本苹果
class JapanApple : public AbstractApple
{
public:
	virtual void showName() {
		cout << "日本苹果" << endl;
	}
};
// 抽象香蕉   产品等级
class AbstractBanana
{
public:
	virtual void showName() = 0;
};
// 中国香蕉
class ChinaBanana : public AbstractBanana
{
public:
	virtual void showName() {
		cout << "中国香蕉" << endl;
	}
};
// 美国香蕉
class USABanana : public AbstractBanana
{
public:
	virtual void showName() {
		cout << "美国香蕉" << endl;
	}
};
// 日本香蕉
class JapanBanana : public AbstractBanana
{
public:
	virtual void showName() {
		cout << "日本香蕉" << endl;
	}
};
// 抽象鸭梨   产品等级
class AbstractPear
{
public:
	virtual void showName() = 0;
};
// 中国鸭梨
class ChinaPear : public AbstractPear
{
public:
	virtual void showName() {
		cout << "中国鸭梨" << endl;
	}
};
// 美国鸭梨
class USAPear : public AbstractPear
{
public:
	virtual void showName() {
		cout << "美国鸭梨" << endl;
	}
};
// 日本鸭梨
class JapanPear : public AbstractPear
{
public:
	virtual void showName() {
		cout << "日本鸭梨" << endl;
	}
};

// 抽象工厂   针对产品族
class AbstractFactory
{
public:
	virtual AbstractApple* creatApple() = 0;
	virtual AbstractBanana* creatBanana() = 0;
	virtual AbstractPear* creatPear() = 0;
};

// 中国工厂
class ChinaFactory : public AbstractFactory
{
public:
	AbstractPear* creatPear(){
		return new ChinaPear;
	}
	AbstractApple* creatApple() {
		return new ChinaApple;
	}
	AbstractBanana* creatBanana() {
		return new ChinaBanana;
	}
};
// 美国工厂 
class USAFactory : public AbstractFactory
{
public:
	AbstractPear* creatPear() {
		return new USAPear;
	}
	AbstractApple* creatApple() {
		return new USAApple;
	}
	AbstractBanana* creatBanana() {
		return new USABanana;
	}
};
// 日本工厂 
class JapanFactory : public AbstractFactory
{
public:
	AbstractPear* creatPear() {
		return new JapanPear;
	}
	AbstractApple* creatApple() {
		return new JapanApple;
	}
	AbstractBanana* creatBanana() {
		return new JapanBanana;
	}
};

// 抽象工厂的使用
void test01()
{
	AbstractFactory* factory = NULL;
	AbstractApple* apple = NULL;
	AbstractBanana* banana = NULL;
	AbstractPear* pear = NULL;

	factory = new ChinaFactory();
	apple = factory->creatApple();
	banana = factory->creatBanana();
	pear = factory->creatPear();
	apple->showName();
	banana->showName();
	pear->showName();
	delete factory;
	delete apple;
	delete banana;
	delete pear;

	factory = new USAFactory();
	apple = factory->creatApple();
	banana = factory->creatBanana();
	pear = factory->creatPear();
	apple->showName();
	banana->showName();
	pear->showName();
	delete factory;
	delete apple;
	delete banana;
	delete pear;

	factory = new JapanFactory();
	apple = factory->creatApple();
	banana = factory->creatBanana();
	pear = factory->creatPear();
	apple->showName();
	banana->showName();
	pear->showName();
	delete factory;
	delete apple;
	delete banana;
	delete pear;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

抽象工厂模式 的相关文章

  • 抽象工厂模式

    工厂模式 工厂方法模式 xff08 Fatory Method Pattern xff09 提供一个接口 xff0c 一个可创建一系列相关对象的 无需指定他们的具体类 一个抽象工厂类 xff0c 不同的具体工厂产生不同的对象实体 eg 冰箱
  • 设计模式详解:抽象工厂模式

    今天我们来看一下另一个使用频率非常高的抽象工厂模式 xff0c 看完原理分别给出 NET和JAVA两种语言的实现源码 定义 xff1a 抽象工厂模式 xff1a 提供一个 创建一系列相关或相互依赖对象的接口 xff0c 而无须指定它们具体的
  • 抽象工厂模式(C++)

    define win 0 define mac 1 include lt iostream gt using namespace std class button public button virtual button virtual v
  • 抽象工厂模式

    抽象工厂模式针对的是对产品族 xff0c 而不是产品等级结构 产品族 xff1a 同一厂商生产的产品 产品等级 xff1a 同一产品 xff0c 不同厂商的产品 比如水果类里面由苹果和香蕉 xff0c 水果就是产品族 xff0c 苹果香蕉就
  • [C++]抽象工厂模式

    抽象工厂模式 Abstract Factory Pattern 是围绕一个超级工厂创建其他工厂 该超级工厂又称为其他工厂的工厂 这种类型的设计模式属于创建型模式 它提供了一种创建对象的最佳方式 在抽象工厂模式中 接口是负责创建一个相关对象的
  • 工厂模式(分简单工厂模式、工厂方法模式、抽象工厂模式)

    1 工厂模式概述 1 1 简单工厂模式 简单工厂模式是一种创建型设计模式 它实现了创建对象的功能 但不使用任何具体类的名称 客户端通过调用工厂类的静态方法来创建一个具体的对象 无需关心对象创建的细节 1 2 工厂方法模式 工厂方法模式是一种
  • java设计模式之抽象工厂模式

    什么是抽象工厂设计模式 抽象工厂模式是一种创建型设计模式 它提供了一种创建一系列相关或依赖对象的方法 而无需指定它们具体的类 抽象工厂模式是工厂方法模式的扩展 它使用一组相关的工厂来创建对象 而工厂方法模式只是使用一个单一的工厂 在抽象工厂
  • 设计模式精讲-抽象工厂方法模式

    设计模式 抽象工厂方法模式 定义 示例 应用场景 优点 定义 提供一个创建一系列相关或互相依赖对象的接口 而无需指定它们具体的类 定义和图不理解的 可以先看下面的示例 回头再去理解 示例 以数据库为例 1 变化的部分 Mysq Oracle
  • java设计模式【抽象工厂模式】

    文章目录 java设计模式 抽象工厂模式 优缺点 使用场景 具体实现 定义抽象工厂 具体工厂 定义抽象产品 具体产品 客户端调用 工厂方法模式和抽象工厂模式区别 补充说明 java设计模式 抽象工厂模式 抽象工厂模式 抽象工厂模式是对简单工
  • 2022-15-Java 设计模式-抽象工厂模式

    在工厂方法模式中 我们使用一个工厂创建一个产品 一个具体工厂对应一个具体产品 但有时候我们需要一个工厂能够提供多个产品对象 而不是单一的对象 这个时候我们就需要使用抽象工厂模式 在介绍抽象工厂模式前 我们先厘清两个概念 产品等级结构 产品等
  • Java与设计模式(3):抽象工厂模式

    一 定义 抽象工厂模式是一种创建型设计模式 它提供了一种将相关对象组合在一起创建的方式 而无需指定它们的具体类 在抽象工厂模式中 有一个抽象工厂接口 该接口定义了一组创建相关对象的方法 每个具体的工厂类都实现了这个接口 并负责创建一组相关的
  • 简单工厂模式(静态工厂方法模式)

    概述 简单工厂模式专门定义一个类来负责创建其他类的实例 被创建的实例通常都具有共同的父类 不是23种模式中的一种 是一种编码习惯 优点 1 工厂类含有必要的判断逻辑 可以决定在什么时候创建哪一个产品类的实例 客户端可以免除直接创建产品对象的
  • 设计模式--工厂模式--抽象工厂模式

    工厂模式属于创建型模式基本原理 使用一个工厂类统一生产各种产品 主要流程 1 创建产品的基类 便于统一返回创建的产品 2 创建各种产品 继承基类 注意多态 3 创建工厂类 对每种产品进行区分创建 4 在使用时要先实例化工厂类 在调用期内生产
  • 创建型设计模式之抽象工厂(Abstract Factory)模式

    定义 为创建一组相关或相互依赖的对象提供一个接口 而且无需指定他们的具体类 用意 客户端在不必指定产品的具体类型情况下 创建多个产品族中某个产品对象 定义图 参与者 抽象工厂 Creator 工厂方法核心 由一个接口或抽象类实现 具体工厂类
  • 设计模式---抽象工厂(AbstractFactory)模式

    1 名词解释 产品等级 指产品的类型一样 品牌不一样 例如空调是一种产品类型 美的空调与格力空调是不同的品牌 产品族 同一个品牌的不同产品 例如美的的空调 电饭锅 热水器属于同一产品族 这里引用一个图片来具体说明这两个名词解释 来自引用2
  • java设计模式——抽象工厂模式(Abstract Factory Pattern)

    抽象工厂模式产生的动机 为了更清晰地理解工厂方法模式 需要先引入两个概念 产品等级结构 产品等级结构即产品的继承结构 如一个抽象类是电视机 其子类有海尔电视机 海信电视机 TCL电视机 则抽象电视机与具体品牌的电视机之间构成了一个产品等级结
  • 2.Java设计模式-----抽象工厂模式(Abstract Factory Pattern)

    抽象工厂模式 Abstract Factory 是23种设计模式之一 抽象工厂模式是这样子定义的 抽象工厂模式 提供一个创建一系列相关或互相依赖对象的接口 而无需指定它们具体的类 在学习抽象工厂模式之前 最好熟悉简单工厂模式以及工厂方法模式
  • Gof23设计模式之工厂方法模式和抽象工厂模式

    在java中 万物皆对象 这些对象都需要创建 如果创建的时候直接new该对象 就会对该对象耦合严重 假如我们要更换对象 所有new对象的地方都需要修改一遍 这显然违背了软件设计的开闭原则 如果我们使用工厂来生产对象 我们就只和工厂打交道就可
  • C++设计模式之抽象工厂模式

    之前讲到了C 设计模式 工厂方法模式 我们可能会想到 后期产品会越来越多了 建立的工厂也会越来越多 工厂进行了增长 工厂变的凌乱而难于管理 而且由于工厂方法模式创建的对象都是继承于Product的 所以工厂方法模式中 每个工厂只能创建同一产
  • C++抽象工厂模式:Abstract Factory Pattern

    抽象工厂模式是工厂方法模式的升级版本 工厂方法模式只有一个抽象产品类 而抽象工厂模式有多个 工厂方法模式的具体工厂类只能创建一个具体产品类的实例 而抽象工厂模式可以创建多个 案例 在上一章节工厂方法模式的基础上 将披萨的各种原料生产抽象成一

随机推荐