1、什么是设计模式
模式的定义:模式是一种问题的解决思路,它已经适用于一个实践环境,并且可以适用于其他坏境。
设计模式通常是对于某一类的软件设计问题的可重用的解决方案,将设计模式引入软件设计和开发过程,其目的就在于要充分利用已有的软件开发经验。
2、设计模式的作用(或者为什么要用设计模式)
(1) 重用设计,重用设计比重用代码更有意义,它会自动带来代码的重用。【代码复用】
(2) 为设计提供共用的词汇,每个模式名就是一个设计词汇,其概念使得程序员间的交流更加方便。【方便交流】
(3) 在开发文档中采用模式词汇可以让其他人更容易理解你的想法,理解为什么你会这样做,你都做了些什么。
编写开发文档也更加容易。【易懂】
(4) 应用设计模式可以让重构系统变得容易,可确保开发正确的代码,并降低在设计或实现中出现错误的可能性,还可以为重写其他应用程序 提供很好的系统框架。【结构清晰】
(5) 正确使用设计模式,可以节省大量的时间。【省时】
按目的准则分类
(1) Creational (创建型):与对象创建有关。
简单工厂模式(Simple Factory);工厂方法模式(Factory Method);抽象工厂模式(Abstract Factory);
创建者模式(Builder);原型模式(Prototype);单例模式(Singleton)。
(2) Structural (结构型):处理类或对象的组合。
外观模式(Facade);适配器模式(Adapter);代理模式(Proxy);装饰模式(Decorator);桥模式(Bridge);组合模式(Composite);享元模式(Flyweight)。
(3) Behavioral (行为型):描述类或对象如何交互及如何分配职责。
模板方法模式(Template Method);观察者模式(Observer);状态模式(State);策略模式(Strategy);
职责链模式(Chain of Responsibility);命令模式(Command);访问者模式(Visitor);调停者模式(Mediator);
备忘录模式(Memento);迭代器模式(Iterator);解释器模式(Interpreter)。
根据范围准则分类
(1) 类模式:用于处理类和子类之间的关系,这些关系通过继承建立,是静态的,在编译时就已经确定下来了。因为从某种意义上说,几乎所有模 式都是使用继承机制,因此此处的“类模式”是指集中处理类间关系的模式,只有很少部分模式属于此类。
(2) 对象模式:用于处理对象间的关系,这些关系具有动态性,在运行期间是可以变化的。
范围\目的 | Creational (创建型) | Structural (结构型) | Behavioural (行为型) |
类 | Simple Factory | Adapter (class) | Interpreter |
Factory Method | Template method | ||
对象 | Abstract Factory | Adapter (object) | Chain of Responsibility |
Builder | Bridge | Command | |
Prototype | Composite | Iterator | |
Singleton | Decorator | Mediator | |
Facade | Memento | ||
Flyweight | Observer | ||
Proxy | State | ||
Strategy | |||
Visitor |