Skip to content

Latest commit

 

History

History
74 lines (53 loc) · 3.25 KB

04.0.设计模式.md

File metadata and controls

74 lines (53 loc) · 3.25 KB

PHP设计模式

设计模式是面向对象编程的经验总结和最佳实践(解决某一类特定问题)。

根据目的和范围,设计模式可以分为五类。按照目的分为:创建设计模式,结构设计模式,以及行为设计模式。按照范围分为:类的设计模式,以及对象设计模式。下面分别介绍。

###创建设计模式

创建设计模式(Creational patterns),用于创建对象时的设计模式。更具体一点,初始化对象流程的设计模式。当程序日益复杂时,需要更加灵活地创建对象,同时减少创建时的依赖。而创建设计模式就是解决此问题的一类设计模式。

  • 抽象工厂模式(Abstract Factory)
  • 建造者模式(Builder)
  • 工厂方法模式(Factory Method)
  • 多例模式(Multiton)
  • 对象池模式(Pool)
  • 原型模式(Prototype)
  • 简单工厂模式(Simple Factory)
  • 单例模式(Singleton)
  • 静态工厂模式(Static Factory)

###结构设计模式

结构设计模式(Structural patterns),用于继承和接口时的设计模式。结构设计模式用于新类的函数方法设计,减少不必要的类定义,减少代码的冗余。

  • 适配器模式(Adapter)
  • 桥梁模式(Bridge)
  • 组合模式(Composite)
  • 数据映射模式(Data Mapper)
  • 装饰模式(Decorator)
  • 依赖注入模式(Dependency Injection)
  • 门面模式(Facade)
  • 流接口模式(Fluent Interface)
  • 代理模式(Proxy)
  • 注册模式(Registry)

###行为设计模式

行为设计模式(Behavioral patterns),用于方法实现以及对应算法的设计模式,同时也是最复杂的设计模式。行为设计模式不仅仅用于定义类的函数行为,同时也用于不同类之间的协议、通信。

  • 责任链模式(Chain Of Responsibilities)
  • 命令行模式(Command)
  • 迭代器模式(Iterator)
  • 中介者模式(Mediator)
  • 备忘录模式(Memento)
  • 空对象模式(Null Object)
  • 观察者模式(Observer)
  • 规格模式(Specification)
  • 状态模式(State)
  • 策略模式(Strategy)
  • 模板方法模式(Template Method)
  • 访问者模式(Visitor)

###其它

  • 委托模式(Delegation)
  • 服务定位器模式(Service Locator)
  • 资源库模式(Repository)

###类的设计模式

类的设计模式(Class patterns),用于类的具体实现的设计模式。包含了如何设计和定义类,以及父类和子类的设计模式。

###对象设计模式

对象设计模式(Object patterns),用于对象的设计模式。与类的设计模式不同,对象设计模式主要用于运行期对象的状态改变、动态行为变更等。

###为什么会重构?

重构通常是由于现有程序的框架不能很好的适应新需求,虽然可以通过硬编码(hardcode)或者绕过(bypass)的方式来解决一个新需求,但这并不是长久之计。当新需求越来越多时,现在程序会越来越冗余,导致最后的不可维护。

###架构和设计模式的区别

相比架构(frameworks),设计模式是一些抽象的组成架构的元素,且更为灵活通用。 架构更适合解决具体问题,使用架构构建应用程序将更为快捷,不过相比设计模式,架构牺牲了灵活性。