三、设计模式
设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
设计模式分为三大类:
① 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
② 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
③ 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
1. 设计模式需要遵循的基本原则
① 单一职责原则: 一个类应该只负责解决一个问题。
② 开放-封闭原则:软件可以扩展,但是已经确定的接口和程序不能进行修改。面对新的需求,对程序的改动是通过增加新代码进行的,而不是更改现有代码。
③ 依赖颠倒原则:
(1). 高层不应该依赖底层模块,两个都应该依赖抽象类。
(2). 要针对接口编程,不要针对实现编程。
④ 里氏代换原则:子类型必须能够替换掉它们的父类型,子类型的可替换性使得使用父类类型的模块在无需修改的情况下就可以扩展。
⑤ 合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用类继承。合成/聚合有助于保持每个类被封装,并被集中在单个任务上。这样类和类继承层次就会保持较小规模,并且不太可能增长为庞大不可控制的类。
合成:合成是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期是一样的。
聚合:聚合是一弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分.

2. 常用的基本设计模式
2.1 PIMP模式
PIMP
(Pointer to Implementation
)模式是常用的基本模式。 PIMP
模式的主要作用是对类的接口与实现进行解耦。该模式的实现方式为通过一个private
成员指针,将指针所指向的类的内部实现数据隐藏。
3. 设计模式具体实现
2.1 单例模式
单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
单例模式分为饿汉式和懒汉式两种:
(1).饿汉式:通过静态初始化的方式,在自己被加载时将自己实例化。饿汉式由于通过静态初始化方式,所以要提前占用系统资源。
(2).懒汉式:在第一次被引用时,才会将自己实例化。懒汉式会面临多线程访问的安全性问题,需要做双重锁定保证安全。