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

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

如上所示,一个cpuFactory和NetcardFactory就是一个工厂模式,而FactoryProducer则是可以得到cpuFacory和NetcardFactory的工厂,如此而已。

时间: 2025-01-01 21:11:46

抽象工厂模式(abstarct factory pattern)和工厂模式(factory pattern)的比较的相关文章

Factory Pattern(工厂模式)

Factory Pattern(C++实现) /*Product.h*/ #ifndef PRODUCT_H #define PRODUCT_H class Product { public: virtual ~Product()=0; protected: Product(); private: }; class ConcreteProduct:public Product { public: ~ConcreteProduct(); ConcreteProduct(); protected:

设计模式---(简单工厂模式,工厂模式,抽象工程模式),单例模式,代理模式,装饰器

简单工厂模式    简单工厂模式并不属于GoF的23种设计模式.     那么为什么我要用工厂模式呢?请看下面的一段程序.  #include  <iostream> using  namespace  std; class  Fruit  { public:     Fruit(string  name)  {         this-­‐>name  =  name;         if  (name  ==  "apple")  {      

Factory Method(工厂方法模式)

using System; namespace FactoryMethod { /// <summary> /// MainApp startup class for Structural /// Factory Method Design Pattern. /// </summary> class MainApp { /// <summary> /// Entry point into console application. /// </summary>

十三、工厂模式Factory(创建型模式)

一.引子 话说十年前,有一个暴发户,他家有三辆汽车--Benz奔驰.Bmw宝马.Audi奥迪,还雇了司机为他开车.不过,暴发户坐车时总是怪怪的:上Benz车后跟司机说"开奔驰车!",坐上Bmw后他说"开宝马车!",坐上Audi说"开奥迪车!".你一定说:这人有病!直接说开车不就行了?! 而当把这个暴发户的行为放到我们程序设计中来时,会发现这是一个普遍存在的现象.幸运的是,这种有病的现象在OO(面向对象)语言中可以避免了.下面就以Java语言为基础

23种设计模式入门(2)Factory Method(工厂方法)

1.什么是工厂模式 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method 使一个类的实例化延迟到其子类. 2.为什么工厂模式是如此常用 因为工厂模式就相当于创建实例对象的 new,我们经常要根据类 Class 生成实例对象,如 A a=new A() ,工厂模式也是用来创建实例对象的, 所以以后 new 时就要多个心眼,是否可以考虑实用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量. 3.适用性 当一个类不知道它所必须创建的对

PHP模式设计之单例模式、工厂模式、注册树模式、适配器模式、观察者模式

php模式设计之单例模式 什么是单例模式? 单例模式是指在整个应用中只有一个实例对象的设计模式 为什么要用单例模式? php经常要链接数据库,如果在一个项目中频繁建立连接数据库,会造成服务器资源的很大浪费,在团队合作项目中,也能够避免不同的程序员实例自己的对象,造成人为的系统消耗. 单例模式的三大原则 1.构造函数需要标记为非public(防止外部使用new操作符创建对象),单例类不能在其他类中实例化,只能被其自身实例化 2.拥有一个保存类的实例的静态成员变量$_instance 3.拥有一个可

PHP设计模式笔记三:三种基本设计模式(工厂模式、单例模式、注册树模式) -- Rango韩老师 http://www.imooc.com/learn/236

一.工厂设计模式 index.php $db = IMooc\Factory::createDatabase(); 使用工厂类的静态方法直接创建一个dababase对象,当类名发生修改时,在工厂里修改即可. IMooc/Factory.php 二.单例设计模式 保证在整个脚本运行期间,只有一个对象的实例,比如数据库操纵对象 Database.php Factory.php index.php output同一个对象: object(IMooc\Database)#1 (0) { } object

面向对象JS基础讲解,工厂模式、构造函数模式、原型模式、混合模式、动态原型模式

什么是面向对象?面向对象是一种思想!(废话). 面向对象可以把程序中的关键模块都视为对象,而模块拥有属性及方法.这样我们如果把一些属性及方法封装起来,日后使用将非常方便,也可以避免繁琐重复的工作.接下来将为大家讲解在JS中面向对象的实现. 工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,而由于在ECMAScript中无法创建类,因此用函数封装以特定接口创建对象.其实现方法非常简单,也就是在函数内创建一个对象,给对象赋予属性及方法再将对象返回即可. function createBlog(

苦逼也聊模式--(1)--简单工厂

既然要提及工厂模式就需要提及一下简单工厂. 简单工厂模式: 是类的创建模式,也可以称为静态工厂. 可以这么理解. 工厂可以生产一个类别的产品,产品必须归属于类别.就如飞机属于飞行器和鸡蛋不是同一类的一样. 现在以飞行器为例子 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ConsoleApplicatio