定义:
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
代码实例:
这里还是接着上篇简单工厂模式的那个例子,改成工厂方法模式。
1、创建一个抽象类 ApptEncoder
/** * 抽象类 * Class ApptEncoder */abstract class ApptEnc...
定义:
简单工厂模式:将调用者和创建者分离,实现解耦,调用者直接向工厂请求,通过工厂去选择需要实例化的对象,用一个单独的类来做这个创建实例的过程。
代码实例:
问题:假设一个关于个人事务管理的项目中有许多类型的对象,其中一个是 Appointment 对象,现在需要通过一种称为 BloggsCal...
定义:
原型模式(Prototype):用原型实例指定创建对象的种类,并且通过 clone 这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。目的是使用 clone 对象来减少 new 对象的开销。
原型 clone 有浅复制和深复制:浅复制:被复制对象的所有...
定义:
抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的具体类。抽象工厂模式主要解决涉及到多个产品系列的问题。
代码实例:
先回顾上一篇中工厂方法模式的例子,该示例以 BloggsCal 和 MegaCal 两种格式管理编码。如果增加更多的编码格式,这种类结构会横向增...
定义:
组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。当你发现需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一的使用组合结构中的所有对象时,就应该考...
定义:
外观模式(Facade):又叫门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
代码实例:
假设实现一个功能需要用到子系统中的四个方法。
/** * Class SubSystemOne */class SubSystemOne{ public function metho...
定义:
装饰器模式(Decorator):动态的给一个对象添加一些额外的职责,就增加功能来说,装饰器比生成子类更加灵活。
结构:
Component:定义一个对象接口,可以给这些对象动态地添加职责。
ConcreteComponent:定义了一个具体的对象,也可以给这个对象添加一些职责。
Decorator:装饰抽象类...
定义:
解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器...