模式概念 组合模式:将对象组合成树形结构,以表示“部分-整体”的层次结构; 独立对象:一个有特定功能的对象,它不引用任何其他对象; 组合对象-则是提供相似功能对象的集合,管理独立对象。并为客户端提供和独立对象一样的访问方…
命令模式(Command)
模式概念 命令模式是对命令的封装。将发出命令的职责和执行命令的职责分开,委派给不同的对象,实现松耦合结构; 应用场景 请求排队或记录请求日志以及支持可撤销的操作; UML类图 代码实现 CommandInterface.…
模板方法模式(TemplateMethod)
模式概念 模板方法模式定义了操作中算法的‘骨架’,而具体具体由子类来完成 应用场景 对于那些已经明确算法中的一些步骤,不够这些步骤可以采用多种不同的方法实现; 各个子类的公共行为可以被提取出来,集中到父类,避免代码重复 …
策略模式(Strategy)
模式概念 定义了一系列算法,算法独立封装,并且可以相互替换;每一种算法就是一个策略; 在具体的应用中,根据环境不同 选择不同的策略处理问题 应用场景 需要使用一个算法的不同变异 UML类图 代码实现 Comparator…
观察者模式(Observer)
模式概念 观察者模式有时也被称为发布/订阅模式,该模式用于为对象实现发布/订阅功能;一旦主体对象状态发生改变,与之关联的观察者对象也会收到通知,并进行相关的操作 特点: 在主体中可以添加任意个…
装饰器模式(Decorator)
模式概念 适配器也称为包装器,顾名思义就是:能够使两个不同的事情之间进行相互兼容 应用场景 ·兼容两个不同的应用场景时使用 UML类图 代码实现 BookInterface.php <?php namespace …
适配器模式(Adapter)
模式概念 适配器也称为包装器,顾名思义就是:能够使两个不同的事情之间进行相互兼容 应用场景 ·兼容两个不同的应用场景时使用 UML类图 代码实现 BookInterface.php <?php namespace …
原型模式(Prototype)
模式概念 通过克隆(cloning)技术复制实例化对象,这样做的目的是减少实例化对象的开销。 注意一点:克隆不会启动 使用场景 如果项目要求你创建原型对象的多个实例,就可以使用原型模式。 UML类图 代码实现 BookP…
工厂模型(FactroyMethod)
模式概念 工厂模式关注于抽象类型时如何解决创建对象实例的问题,通过子类实例化具体的类。 UML类图 代码实现 VehicleInterface.php <?php namespace DesignPatterns\…
多例模式(Mutiton)
模式定义 与单例模式类似,只是多例模式能够返回多个实例; 应用场景 多个数据库连接(mysql、MongoDb、SQLite) 多种日志记录 UML类图 代码实现 Multiton.php <?php namesp…