您的位置:快乐家园 > PHP开发 > 文章内容
面向对象开发的设计模式  
添加时间:2021-08-29

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。

设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

《设计模式 - 可复用的面向对象软件元素》四位作者合称 GOF(四人帮,全拼 Gang of Four)。他们所提出的设计模式主要是基于以下的面向对象设计原则。

 +对接口编程而不是对实现编程。

 +优先使用对象组合而不是继承。

设计模式在软件开发中的两个主要用途:

1 开发人员的共同平台

设计模式提供了一个标准的术语系统,且具体到特定的情景。例如,单例设计模式意味着使用单个对象,这样所有熟悉单例设计模式的开发人员都能使用单个对象,并且可以通过这种方式告诉对方,程序使用的是单例模式。

2 最佳的实践

设计模式已经经历了很长一段时间的发展,它们提供了软件开发过程中面临的一般问题的最佳解决方案。学习这些模式有助于经验不足的开发人员通过一种简单快捷的方式来学习软件设计。


创建型模式

 记忆口决:原单建工厂

  这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

 +原型模式(Prototype Pattern) 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 #利用已有的一个原型对象,快速地生成和原型对象一样的实例。

 +单例模式(Singleton Pattern) 保证一个类仅有一个实例,并提供一个访问它的全局访问点。#判断系统是否已经有这个单例,如果有则返回,如果没有则创建。

 +建造者模式(Builder Pattern) 将一个对象的复杂创建过程与他的表示分离。 ##将变与不变分离开。

 +工厂模式(Factory Pattern)   定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。#让其子类实现工厂接口,返回的也是一个抽象的产品。

 +抽象工厂模式(Abstract Factory Pattern)  提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 #在一个工厂里聚合多个同类产品。


结构型模式

  这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。

  记忆口决:配组装桥享外代

 +适配器模式(Adapter Pattern)   (改变接口) 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

 +组合模式(Composite Pattern)   将对象组合成树形结构以表示"部分-整体"的层次结构。

 +装饰器模式(Decorator Pattern) (加功能) 动态地给一个对象添加一些额外的职责。

 +桥接模式(Bridge Pattern)      将抽象部分与实现部分分离

 +享元模式(Flyweight Pattern)   运用共享技术有效地支持大量细粒度的对象。

 +外观模式(Facade Pattern)      为子系统中的一组接口提供一个一致的界面

 +代理模式(Proxy Pattern)       (不加功能,加控制)  为其他对象提供一种代理以控制对这个对象的访问

 +过滤器模式(Filter、Criteria Pattern)


行为型模式

  这些设计模式特别关注对象之间的通信。

  记忆口决:责令解迭策,状备中观模

 +责任链模式(Chain of Responsibility Pattern)  ###为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。

 +命令模式(Command Pattern)        请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。

 +解释器模式(Interpreter Pattern)  ###

 +迭代器模式(Iterator Pattern)    这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。

 +策略模式(Strategy Pattern)      一个类的行为或其算法可以在运行时更改

 +状态模式(State Pattern)        类的行为是基于它的状态改变的。

 +备忘录模式(Memento Pattern)    保存一个对象的某个状态,以便在适当的时候恢复对象

 +中介者模式(Mediator Pattern)  用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。例如聊天室对话对象

 +观察者模式(Observer Pattern)    ###当对象间存在一对多关系时,当一个对象被修改时,则会自动通知依赖它的对象。

 +模板模式(Template Pattern)      一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式运行。