贺胖娇的编程之旅......

设计模式基础

2019.07.07

本文参考了书籍《大话设计模式》/文章从招式与内功谈起——设计模式概述 以及系列文章PHP 设计模式系列

定义

在软件工程中,设计模式(Design Pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。 这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域引入到计算机科学的。
设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。 面向对象设计模式通常以类或对象来描述其中的关系和相互作用,但不涉及用来完成应用程序的特定类或对象。
设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。

并非所有的软件模式都是设计模式,设计模式特指软件“设计”层次上的问题。还有其它非设计模式的模式,如架构模式。同时,算法不能算是一种设计模式,因为算法主要是用来解决计算上的问题,而非设计上的问题。

设计模式的作用

(1)设计模式经过多年的使用和实践,包含了大量成功的,可维护可复用的设计方案,在很多情况下,设计模式可以提高开发效率,节约时间
(2)设计模式跨语言、跨平台、跨应用、跨国界,提供了通用的词汇和使用方式,节约交流时间
(3)大部分设计模式都兼顾了系统的可重用性和扩展性,这使很多系统可以重用,减少代码重复
(4)合理使用设计模式有助于别人理解自己的代码
(5)有助于更为深刻地理解面对对象编程

如何掌握设计模式

a.这个设计模式的意图是什么
b.它要解决一个什么问题
c.什么时候可以使用它
d.它是如何解决问题的
e.掌握它的结构图
f.记住它的关键代码
g.能够想到至少两个它的应用实例,一个生活中的,一个软件中的
h.这个模式的优缺点是什么
i.在使用时要注意什么

注意事项

(1)最好的掌握设计模式的方法是使用它们
(2)千万不要滥用模式

设计模式分类

设计模式可以分为三大类,创建型,结构型,行为型

创建型

在软件工程中,创建型设计模式是处理对象创建机制的设计模式,试图以适当的方式来创建对象。
对象创建的基本形式可能会带来设计问题,亦或增加了设计的复杂度。
创建型设计模式通过控制这个对象的创建方式来解决此问题。
在软件工程中,创建型设计模式用于处理对象的实例化:

常用创建型模式

(1)抽象工厂模式(Abstract Factory)
(2)建造者模式(Builder)
(3)工厂方法模式(Factory Method)
(4)多例模式(Multiton)
(5)对象池模式(Pool)
(6)原型模式(Prototype)
(7)简单工厂模式(Simple Factory)
(8)单例模式(Singleton)
(9)静态工厂模式(Static Factory)

结构型

在软件工程中,结构型设计模式是通过识别实体之间关系来简化设计的设计模式。
结构型设计模式用于处理类和对象的组合

常用结构型模式

(1)适配器模式(Adapter)
(2)桥梁模式(Bridge)
(3)组合模式(Composite)
(4)数据映射模式(Data Mapper)
(5)装饰模式(Decorator)
(6)依赖注入模式(Dependency Injection)
(7)门面模式(Facade)
(8)流接口模式(Fluent Interface)
(9)代理模式(Proxy)
(10)注册模式(Registry)

行为型

在软件工程中,行为设计模式是识别对象之间的通用通信模式并实现这些模式的设计模式。
通过这样做,这些模式增加了执行此通信的灵活性。
行为型设计模式用于处理类的对象间通信:

常用行为型模式

(1)责任链模式(Chain Of Responsibilities)
(2)命令行模式(Command)
(3)迭代器模式(Iterator)
(4)中介者模式(Mediator)
(5)备忘录模式(Memento)
(6)空对象模式(Null Object)
(7)观察者模式(Observer)
(8)规格模式(Specification)
(9)状态模式(State)
(10)策略模式(Strategy)
(11)模板方法模式(Template Method)
(12)访问者模式(Visitor)

其他

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

发表评论