设计模式是提供给开发人员的一种标准方式,让开发人员之间有一套共享词汇,设计模式可以使人们深入理解面向对象的设计思想,提高软件开发效率节约设计成本,一般情况下,一个模式说明了几个对象,组件或类,并且号详细说明了对象,组件或类的关系,职责以及他内部之间的合作,学习设计模式可以使我们深入理解面向对象的设计思想,熟悉设计模式的软件开发人员可以很快的把模式运用到软件设计中。
设计模式主要分为三种类型:创建型、结构型和行为型。
创建型:
1. 单例模式:保证一个类只有一个实例,并提供一个访问他的全局访问点(单例模式分为懒汉式和饿汉式)
2.抽象工厂:提供一个接口,用于创建一系列相关或相互依存的对象,而无需为其指定特定类。
3.工厂方法:定义一个创建对象的接口,让子类决定实例化哪个类工厂方法是类对子类的实例化延迟。
4.构建模式:复制对象的构建从其表示中分离出来,以便相同的构建过程可以创建不同的表示。
5.原型模式:使用原型实例指定要创建的对象类型,并复制这些原型以创建新对象。
行为型:
1.Iterator模式:提供一种方法,该方法可以顺序地访问聚集对象的元素,而不公开对象的内部表示形式。
2.观察者模式:定义对象之间的一对多依赖关系。当一个对象的状态改变时,所有依赖它的对象都会被通知自动更新。
3.模板方法、模板模式:在操作中定义算法的骨架,并将某些步骤延迟到子类中,模板方法允许子类重新定义算法的某些特定步骤而不改变算法的结构。
4.命令模式:将请求封装为一个对象,这样您就可以用不同的请求参数化客户、队列请求、记录请求日志,并支持可撤销的操作。
5.状态、状态模式:允许对象在其内部状态更改时更改其行为,并且该对象似乎已更改了他的类。
6.策略:定义一系列算法,逐一封装,使之能够相互替换。这种模式使得算法能够独立于用户。
7.工作链模式:多个对象有机会处理该请求,从而避免了发送方和接收方之间的耦合关系。
8.中介模式:封装一系列与中介对象的对象交互。
9.访问者模式:一种表示一个元素作用于对象结构的操作,它允许您在不改变元素类的情况下定义作用于该元素的新操作。
10.解释器模式:给定一种语言,定义其语法的表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
11.Memeno,备注模式:在不破坏对象的情况下捕获对象的内部状态,并将状态保存在对象之外。
结构型:
1.复合,复合模式:将对象组合成属性结构,表达部分与整体的关系。复合使用户一致地使用单个对象和复合对象。
2.外观模式:为子系统中的一组接口提供一致的接口,提供高级接口,使子系统更易于使用。
3.代理:为其他对象提供代理以控制对此对象的访问
4.适配器,适配器模式:将一类接口转换为客户想要的另一个接口,并且适配器模式使得可能一起工作,因为接口不兼容,不能一起工作。
5.Decorator模式:动态地向对象添加一些额外的职责。对于添加的函数,装饰器模式比子类生成更灵活。
6.Bridge,桥模式:将抽象部分与他的实现部分相分离,使他们可以独立的变化。
7.Flyweight,享元模式