php实现设计模式中的抽象工厂模式详解

php实现设计模式中的抽象工厂模式详解

ID:30786807

大小:55.50 KB

页数:6页

时间:2019-01-03

php实现设计模式中的抽象工厂模式详解_第1页
php实现设计模式中的抽象工厂模式详解_第2页
php实现设计模式中的抽象工厂模式详解_第3页
php实现设计模式中的抽象工厂模式详解_第4页
php实现设计模式中的抽象工厂模式详解_第5页
资源描述:

《php实现设计模式中的抽象工厂模式详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、PHP实现设计模式中的抽象工厂模式详解这篇文章主要介绍了PHP实现设计模式屮的抽象工厂模式详解,抽象工厂模式(AbstactFactory)是一种常见的软件设计模式,需要的朋友可以参考下抽象工厂模式(AbstactFactory)是一种常见的软件设计模式。该模式为一个产品族提供了统一的创建接口。当需要这个产品族的某一系列的时候,可以为此系列的产品族创建一个具体的工厂类。【意图】抽象工厂模式提供一个创建一系统相关或相互依赖对象的接口,而无需指定它们具体的类[GOF95]【抽象工厂模式结构图】【抽象工厂模式中主要角色】抽象1?)(AbstractFactory)角色:它声明一个创建抽彖产品对

2、象的接口。通常以接口或抽彖类实现,所有的具体工厂类必须实现这个接口或继承这个类。具体工r*(ConcreteFactory)角色:实现创建产品对象的操作。客户端直接调用这个角色创建产品的实例。这个角色包含有选择合适的产品对象的逻辑。通常使用具体类实现。抽象产品(AbstractProduct)角色:声明一类产品的接口。它是工厂方法模式所创建的对象的父类,或它们共同拥有的接口。具体产品(ConcreteProduct)角色:实现抽象产品角色所定义的接口,定义一个将被相应的具体工厂创建的产品对象。其内部包含了应用程序的业务逻辑。【抽象工厂模式的优缺点】抽象工厂模式的优点:1、分离了具体的类2

3、、使增加或替换产品族变得容易3、有利于产品的一致性抽象工厂模式的缺点:难以支持新种类的产品。这是因为AbstractFactory接口确定了可以被创建的产品集合。支持新各类的产品就需要扩展访工厂接口,从而导致AbstractFactory类及其所有子类的改变。抽象工厂就是以一种倾斜的方式支持增加新的产品屮,它为新产品族的增加提供了方便,而不能为新的产品等级结构的增加提供这样的方便。【抽彖工厂模式适用场景】以下情况应当使用抽象工厂模式:1>一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。2、这个系统的产品有多于一个的产品族,而系统只消费其屮某

4、一族的产品。3、同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出來。4、系统提供一个产品类的库,所有的产品以同样的接口出现,从而使用客户端不依赖于实现【Java与模式189页】AbstractFactory模式的几个要点:1、如果没有应对“多系列对象构建”的需求变化,则没有必要使用AbstractFactory模式。2、“系列对象”指的是这项对象之间有相互依赖、或作用的关系。3、AbstractFactory模式主要在于应対"新系列”的需求变动。缺点是难以应对“新对象”的需求变动。这一点应该注意,就像前面说的,如果我们现在要在加入其他系列的类,代码的改动会很大。4

5、、AbstractFactory模式经常和FactoryMethod模式共同组合来应对“对彖创建”的需求变化。抽象工厂中的增加1.在产品等级结构的数目不变的情况下,增加新的产品族,就意味着在每一个产品等级结构中增加一个(或者多个)新的具体(或者抽象和具体)产品角色。由于工厂等级结构是与产品等级结构平行的登记机构,因此,当产品等级结构有所调整时,需要将工厂等级结构做相应的调整。现在产品等级结构中出现了新的元素,因此,需要向工厂等级结构中加入相应的新元素就可以了。换言Z,设计师只需要向系统屮加入新的具体工厂类就可以了,没有必要修改已有的工厂角色或者产品角色。因此,在系统中的产品族增加时,抽象

6、工厂模式是支持“开■闭”原则的。2.在产品族的数FI不变的情况下,增加新的产品等级结构。换言之,所有的产品等级结构中的产品数目不会改变,但是现在多出一个与现有的产品等级结构平行的新的产品等级结构。要做到这一点,就需要修改所有的工厂角色,给每一个工厂类都增加一个新的工厂方法,而这显然是违背“开-闭”原则的。换言之,对于产品等级结构的增加,抽象工厂模式是不支持“开・闭”原则的。综合起来,我们可以知道,在已有的抽象产品屮添加其具体产品,支持“开一闭原则”,然而在添加其抽象产品时,确不支持“开一闭”原则。抽彖工厂模式以一种倾斜的方式支持增加新的产品,它为新产品族的增加提供方便,而不能为新的产品等

7、级结构的增加提供这样的方便。【抽象工厂模式与其它模式】单例模式(singleton模式):具体工厂类可以设计成单例类,由于工厂通常有一个就可以,因此具体工厂子类一般都实现为一个Singletono工厂方法模式(factorymethod模式):抽象工厂创建产品的方法定义为工厂方法。原型模式(prototype模式):如果有多个可能的产品系列,具体的工厂也可以使用原型模式,具体工厂使用产品系列中。每一个产品的原型进行实例化并口通过复制

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。