美文网首页
抽象工厂

抽象工厂

作者: szn好色仙人 | 来源:发表于2019-03-19 20:18 被阅读0次

动机

  • 在软件系统中,经常面临一系列相互依赖的对象的创建工作。同时由于需求的变化,往往存在更多系列对象的创建工作

定义

  • 提供一个接口,让该接口负责创建一系列相关或者相互依赖的对象,无需指定它们具体的类

要点

  • 如果没有应对多系列对象构建的需求变化,则没有必要使用抽象工厂模式,这时候使用简单的工厂完全可以
  • 系列对象指的是在某一特定系列下的对象之间有相互依赖、作用的关系。不同系列的对象之间不能相互依赖
  • 抽象工厂模式主要在于应对新系列的需求变动。缺点在于难以应对新对象的需求变动

示例

#include <cstdio>


//CBasePrint 与 CBaseDeal 是具有关联关系的类,经常需要一起被创建


class CBasePrint
{
public:
    virtual ~CBasePrint() {}
    virtual void Print() = 0;
};
class CChild_Print_0 : public CBasePrint
{
public:
    virtual void Print() { printf("P 0\n"); }
};
class CChild_Print_1 : public CBasePrint
{
public:
    virtual void Print() { printf("P 1\n"); }
};


class CBaseDeal
{
public:
    virtual ~CBaseDeal() {}
    virtual void Deal() = 0;
};
class CChild_Deal_0 : public CBaseDeal
{
public:
    virtual void Deal() { printf("D 0\n"); }
};
class CChild_Deal_1 : public CBaseDeal
{
public:
    virtual void Deal() { printf("D 1\n"); }
};


//抽象工厂,负责一系列相关对象的创建工作
class CFactoryBase
{
public:
    virtual ~CFactoryBase() {}

    virtual CBasePrint* CreatePrint() = 0;
    virtual CBaseDeal* CreateDeal() = 0;
};
class CFactory_0
{
public:
    virtual CBasePrint* CreatePrint() { return new CChild_Print_0; }
    virtual CBaseDeal* CreateDeal() { return new CChild_Deal_0; }
};
class CFactory_1
{
public:
    virtual CBasePrint* CreatePrint() { return new CChild_Print_1; }
    virtual CBaseDeal* CreateDeal() { return new CChild_Deal_1; }
};


int main()
{
    CFactory_0 Factory0;
    CFactory_1 Factory1;

    Factory0.CreatePrint()->Print();    //P 0
    Factory0.CreateDeal()->Deal();      //D 0

    Factory1.CreatePrint()->Print();    //P 1
    Factory1.CreateDeal()->Deal();      //D 1

    return 0;
}

https://www.bilibili.com/video/av24176315/?p=9

相关文章

  • 第3章 创建型模式-抽象工厂模式

    ■ 抽象工厂模式的优点 ■ 抽象工厂模式的缺点 ■ 抽象工厂模式的使用场景 ■ 抽象工厂 AbstractFact...

  • 抽象工厂模式(选择产品簇)

    目录 回顾众多工厂模式 抽象工厂模式的理念 抽象工厂模式与工厂方法模式的差异 怎么来实现抽象工厂模式 抽象工厂模式...

  • 【抽象工厂模式】Abstract Factory Design

    抽象工厂模式 抽象工厂模式是**Creational **模式之一 抽象工厂模式和工厂模式很相似,甚至可以说抽象工...

  • 工厂模式

    工厂模式细分三种:简单工厂模式、工厂模式、抽象工厂模式。 工厂模式相当于抽象了简单工厂模式的工厂类,而抽象工厂模式...

  • 设计模式(三)——抽象工厂模式

    抽象工厂模式 抽象工厂模式是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。在抽象工厂中,接口是负责...

  • 工厂模式

    抽象工厂模式:抽象工厂,具体工厂,抽象产品,具体产品 形容词用接口,名词用抽象类 工厂方法就是只生成一种产品的抽象...

  • 抽象工厂

    iOS设计模式 - 抽象工厂 原理图 说明 抽象工厂相当于在简单工厂基础上将工厂进行了抽象 抽象工厂提供了创建一系...

  • 设计模式(3) 抽象工厂模式

    抽象工厂模式 优化抽象工厂 异步工厂 在学习抽象工厂模式前,先来回顾一下前面的简单工厂和工厂方法模式。简单工厂的职...

  • Android 源码设计模式解析与实战 读书笔记 6 抽象工厂模

    创建型设计模式 —— 抽象工厂模式 1. 抽象工厂模式介绍 抽象工厂模式(Abstract Factory Pat...

  • 3. 设计模式的代码表示之一

    一、工厂模式(【客户类】→【工厂类/工厂方法】→创建【服务类】) 二、抽象工厂(【客户类】→【抽象工厂类】→【工厂...

网友评论

      本文标题:抽象工厂

      本文链接:https://www.haomeiwen.com/subject/owznmqtx.html