2,抽象工厂模式(Abstract Factory Pattern) 抽象工厂可以一下生产一个产品族(里面有很多产品组成)

备注     工厂模式:要么生产香蕉、要么生产苹果、要么生产西红柿;但是不能同时生产一个产品组。

    抽象工厂:能同时生产一个产品族。===》抽象工厂存在原因

解释 :    具体工厂在开闭原则下,                能生产香蕉/苹果/梨子;  (产品等级结构)

抽象工厂:在开闭原则下,               能生产:南方香蕉/苹果/梨子 (产品族)  北方香蕉/苹果/梨子

重要区别:

             工厂模式只能生产一个产品。(要么香蕉、要么苹果)

             抽象工厂可以一下生产一个产品族(里面有很多产品组成

  1 #include <iostre
  2 using namespace std;
  3 //水果虚父类
  4 class Fruit
  5 {
  6 public:
  7     virtual void SayName() = 0;
  8 };
  9 //园区(多工厂)虚父类
 10 class AbstractFactory
 11 {
 12 public:
 13     virtual Fruit* CreateBanana() = 0;
 14     virtual Fruit* CreateApple() = 0;
 15 };
 16 //水果子类A 来自园区工厂
 17 class NorthBanana : public Fruit
 18 {
 19 public:
 20     virtual void SayName()
 21     {
 22         cout << "我是北方香蕉" << endl;
 23     }
 24 };
 25 //水果子类B 来自园区工厂
 26 class NorthApple : public Fruit
 27 {
 28 public:
 29     virtual void SayName()
 30     {
 31         cout << "我是北方苹果" << endl;
 32     }
 33 };
 34
 35 //水果子类C 来自园区工厂
 36 class SourthBanana : public Fruit
 37 {
 38 public:
 39     virtual void SayName()
 40     {
 41         cout << "我是南方香蕉" << endl;
 42     }
 43 };
 44
 45 //水果子类D 来自园区工厂
 46 class SourthApple : public Fruit
 47 {
 48 public:
 49     virtual void SayName()
 50     {
 51         cout << "我是南方苹果" << endl;
 52     }
 53 };
 54 //北方工厂 园区内
 55 class NorthFacorty : public AbstractFactory
 56 {
 57     virtual Fruit * CreateBanana()
 58     {
 59         return new NorthBanana;
 60     }
 61     virtual Fruit * CreateApple()
 62     {
 63         return new NorthApple;
 64     }
 65 };
 66 //南方工厂 园区内
 67 class SourthFacorty : public AbstractFactory
 68 {
 69     virtual Fruit * CreateBanana()
 70     {
 71         return new SourthBanana;
 72     }
 73     virtual Fruit * CreateApple()
 74     {
 75         return new SourthApple;
 76     }
 77 };
 78
 79
 80 void main()
 81 {
 82     Fruit            *fruit = NULL;
 83     AbstractFactory *af = NULL;
 84
 85     ///---南方工厂 生产苹果 就是南方苹果  生产香蕉就是北方香蕉-----------
 86     af = new SourthFacorty;
 87     fruit = af->CreateApple();
 88     fruit->SayName();
 89     delete fruit;
 90     fruit = af->CreateBanana();
 91     fruit->SayName();
 92     delete fruit;
 93
 94     ///------
 95     af = new NorthFacorty;
 96     fruit = af->CreateApple();
 97     fruit->SayName();
 98     delete fruit;
 99     fruit = af->CreateBanana();
100     fruit->SayName();
101     delete fruit;
102
103     delete af;
104     system("pause");
105     return ;
106 }

时间: 2024-12-15 03:21:40

2,抽象工厂模式(Abstract Factory Pattern) 抽象工厂可以一下生产一个产品族(里面有很多产品组成)的相关文章

抽象工厂模式(abstarct factory pattern)和工厂模式(factory pattern)的比较

抽象工厂模式和工厂模式从字面上来看就有必然的联系,他们都是创建型模式.总结来说,工厂模式(factory pattern)只是个小工厂,只提供一层接口的实现类的输出,而抽象工厂模式(abstract factory pattern)是工厂模式的进一步升级,可以上升到两层以上的工厂模式继承,是工厂的工厂.一计算机来说,工厂模式可以是不同型号显示器,CPU或者网卡的提供者,而抽象工厂模式是显示器工厂.CPU工厂和网卡工厂的工厂.可以通过抽象工厂来获得CPU工厂,进而获得某个型号的CPU.整个依赖关系

二十四种设计模式:抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式(Abstract Factory Pattern) 介绍提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 示例有Message和MessageModel,Message有一个Insert()方法,该方法的参数是MessageModel. AbstractMessageModel using System; using System.Collections.Generic; using System.Text; namespace Pattern.Abstract

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

抽象工厂模式(abstract factory pattern) 详解 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27091671 参考工厂模式: http://blog.csdn.net/caroline_wendy/article/details/27081511 抽象工厂模式: 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要明确指定具体类. 全部代码: http://download.csdn.net/de

设计模式 - 抽象工厂模式(abstract factory pattern) 具体解释

抽象工厂模式(abstract factory pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27091671 參考工厂模式: http://blog.csdn.net/caroline_wendy/article/details/27081511 抽象工厂模式: 提供一个接口, 用于创建相关或依赖对象的家族, 而不须要明白指定详细类. 所有代码: http://download.csdn.net/

【设计模式】 抽象工厂模式 Abstract Factory Pattern

简单工厂模式是一个工厂类根据工厂方法的参数创建不出不同的产品, 工厂方法模式是每一个产品都有一个一一对应的工厂负责创建该产品.那么今天要讲的抽象工厂模式是一个工厂能够产生关联的一系列产品.抽象工厂模式相对于简单工厂和工厂方法模式来着更具抽象性. 一.抽象工厂模式演绎 我们先来看一个简单的需求: 甲方要开发一套办公自动化软件,其中有一个非常重要的功能就是要能够导入Word 文档和Excel 文档. 开发人员拿到需求后就开始编码了,  很快代码写完了: public class ImportTool

设计模式-04抽象工厂模式(Abstract Factory Pattern)

1.模式动机 在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法.但是有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象. 为了更清晰地理解工厂方法模式,需要先引入两个概念: 产品等级结构:产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机.海信电视机.TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌

抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式概述 定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类 抽象工厂抽象工厂,顾名思义,就是比工厂模式更抽象的工厂模式.在工厂模式中,一个具体工厂只负责生产一个具体产品.而在抽象工厂模式中,一个具体工厂可以生产一组相关的产品,这些产品称为产品族,产品族中的每一个产品部分属于每一个产品继承等级结构 首先我们先了解下什么是产品族和产品等级结构.产品等级结构即产品的继承结构,好比一个抽象类是汽车,其子类包括奔驰,宝马,大众,保时捷.....这样抽象汽车与具体汽车品牌之间

抽象工厂模式(Abstract Factory)C#实例

抽象工厂模式(Abstract Factory)C#实例 本文出处http://www.dofactory.com/net/abstract-factory-design-pattern 一.场景描述 本实例描述了抽象工厂模式的一个使用场景.在动物世界弱肉强食,食肉动物会吃掉食草动物.这是动物世界的规律,因此在动物世界类中有Runfoodchain(运行食物链)方法.在动物世界里总是有食肉动物和食草动物这两个抽象成员.它们之所以是抽象成员是因为他们不是具体的一种动物.而食草动物与食肉动物的区别在

Android设计模式——抽象工厂模式(Abstract Factory)

二十三种设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 1 package com.example.main; 2 3 import android.app.Activity; 4 import

php设计模式——抽象工厂模式(Abstract Factory)

二十三种设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 1 <?php 2 /* 3 * php设计模式——抽象工厂模式(Abstract Factory) 4 */ 5 6 7 /* 8 * I