摘要:抽象工厂模式抽象工厂是工厂模式的升级版,他用来创建一组相关或者相互依赖的对象。代码抽象工厂模式抽象工厂的优点抽象工厂模式除了具有工厂方法模式的优点外,最主要的优点就是可以在类的内部对产品族进行约束。
抽象工厂模式
抽象工厂是工厂模式的升级版,他用来创建一组相关或者相互依赖的对象。上节学习了工厂模式,类的创建依赖工厂类,程序需要扩展时,我们必须创建新的工厂类。工厂类是用来生产产品的,那我们也可以把“工厂类当成我们要生产的产品”,所以抽象工厂就是“工厂的工厂”,即生产工厂的工厂。下面通过一个例子来深入理解。
代码//抽象工厂模式 var DP = require("./DesignPattern.js"); function CPUFactory() { DP.Interface(this, ["createCPU"]); } function IntelCPU() { this.__proto__ = new CPUFactory(); this.createCPU = function () { console.log("Intel CPU"); }; } function AMDCPU() { this.__proto__ = new CPUFactory(); this.createCPU = function () { console.log("AMD CPU"); }; } function Provider() { DP.Interface(this, ["createCPUFactory"]); } function InterCPUFactory() { this.__proto__ = new Provider(); this.createCPUFactory = function () { return new IntelCPU(); }; } function AMDCPUFactory() { this.__proto__ = new Provider(); this.createCPUFactory = function () { return new AMDCPU(); }; } var cpufactory = new InterCPUFactory(); var IntelCpu = cpufactory.createCPUFactory(); IntelCpu.createCPU(); cpufactory = new AMDCPUFactory(); var AmdCpu = cpufactory.createCPUFactory(); AmdCpu.createCPU();抽象工厂的优点
抽象工厂模式除了具有工厂方法模式的优点外,最主要的优点就是可以在类的内部对产品族进行约束。所谓的产品族,一般或多或少的都存在一定的关联(例如不同厂商生产CPU)。
适用场景一个继承体系中,如果存在着多个等级结构(即存在着多个抽象类),并且分属各个等级结构中的实现类之间存在着一定的关联或者约束,就可以使用抽象工厂模式。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/79470.html
摘要:原文地址设计模式八工厂模式在设计模式七设计模式分类中我们提到过创建设计模式,创建设计模式专注于设计对象和实例的创建过程。工厂模式工厂模式,也是五种设计模式中唯一的类的设计模式,即在类中就能实现的设计模式。 原文地址:PHP设计模式(八):工厂模式 Introduction 在PHP设计模式(七):设计模式分类中我们提到过创建设计模式(Creation patterns),创建设计模式专...
摘要:抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。前边的两个都是直接生产实例的,开始以为抽象工厂也是但是后来发现抽象工厂更像是生产工厂,其实抽象工厂其实是实现子类继承父类的方法。 创建型模式 创建型模式是对一个类的实例化过程进行了抽象,把对象的创建和对象的使用进行了分离 上一篇介绍了下单例模式,这一篇介绍一下工厂模式和抽象工厂模式,...
摘要:参考文章深入理解三种工厂模式工厂模式,工厂方法模式,抽象工厂模式详解工厂模式是中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 参考文章:深入理解java三种工厂模式工厂模式,工厂方法模式,抽象工厂模式 详解 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的...
阅读 2497·2021-11-15 18:14
阅读 1721·2021-10-14 09:42
阅读 3762·2021-10-11 10:58
阅读 3962·2021-10-09 09:44
阅读 2422·2021-09-26 09:55
阅读 2446·2021-09-24 10:38
阅读 2036·2021-09-04 16:48
阅读 3277·2021-09-02 15:21