什么是设计模式
模式是一种可以复用的解决方案,用于解决软件设计中遇到的常见问题。
为什么要学习设计模式
- 模式是已经验证的解决方案。在项目开发的过程中,我们经常会遇到一些设计上的问题导致我们焦头烂额,殊不知,我们所谓的问题已经被前人所遇到并解决掉。而模式正是前人所解决掉的一系列的典型的问题
- 模式很容易被复用。那些被解决掉了问题所形成模式是具有普适性的,可以对我们之后的实践起到一定指导意义的,在一开始我们就可以具有一定的套路
- 模式富有表达力。描述这些问题通常需要很多一幅篇章来说明,而且可能会词不达意。但是,使用模式可以让我们用更简单的语句更加生动地描述我们遇到的问题
设计模式分类
创建型设计模式
创建型设计模式抽象了对象的实例化过程。它们帮助一个系统独立于如何创建、组合和表示它的那些对象。类创建型模式使用继承改变被实例化的类,对象创建型模式将实例化委托给另一个对象
创建型设计模式的核心关注点只有两个
- 将系统中使用哪些具体类的信息给封装起来
- 隐藏了类的实例是如何被创建和放在一起的
创建型模式在什么被创建、谁创建了它、它是怎么样被创建的、以及何时创建等方面具有较大的灵活性。它们允许你用结构和功能差别很大的“产品”对象配置一个系统。配置可以是静态的(编译时指定),也可以是动态的(运行时指定)
结构型设计模式
结构型设计模式描述如何将类或者对象结合在一起形成更大的结构,并同时保持结构的灵活和高校。就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构
结构型设计模式可以分为类结构型设计模式和对象结构型设计模式
- 类结构型设计模式关心类的组合,由多个类可以组合成一个更大的系统,在类结构型模式中一般只存在继承关系和实现关系
- 对象结构型设计模式关心类与对象的组合,通过关联关系使得在一个类中定义另一个类的实例对象,然后调用该对象的实例方法
整理中...
- 适配器模式(
Adapter) - 桥接模式(
Bridge) - 组合模式(
Composite) - 装饰器模式(
Decorator) - 外观模式(
Facade) - 享元模式(
Flyweight) - 代理模式(
Proxy)
行为设计模式
行为型设计模式是对在不同对象之间划分责任和算法的抽象化
行为型设计模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用
通过行为型设计模式,可以更加清晰地划分类与对象的职责,并研究系统在运行时实例对象之间的交互。在系统运行时,对象并不是孤立的,它们可以通过相互通信与协作完成某些复杂功能,一个对象在运行时也将影响到其他对象的运行
行为型设计模式可以分为类行为型设计模式和对象行为型设计模式
- 类行为型设计模式主要通过多态的方等方式来分配父类与子类的职责,使用继承关系在几个类之间分配职责
- 对象行为型设计模式则使用对象的聚合关联关系来分配行为
整理中...
- 责任链模式(
Chain of Responsibility) - 命令模式(
Command) - 解释器模式(
Interpreter) - 迭代器模式(
Iterator) - 中介者模式(
Mediator - 备忘录(
Memento) - 观察者模式(
Observer) - 状态模式(
State) - 策略模式(
Strategy) - 模版方法模式(
Template Method) - 访问者模式(
Visitor)