设计模式
朝菌不知晦朔,蟪蛄不知春秋。
设计是为了提高软件的性能和安全以及程序员更加容易维护和编写,设计模式不是单一的,是复杂灵活的,GOF//四人组
1. 设计原则
设计原则名称 | 定 义 | 使用频率 |
---|---|---|
单一职责原则(Single Responsibility Principle, SRP) | 一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中 | ★★★★☆ |
开闭原则(Open-Closed Principle, OCP) | 软件实体应当对扩展开放,对修改关闭 | ★★★★★ |
里氏代换原则(Liskov Substitution Principle, LSP) | 所有引用基类的地方必须能透明地使用其子类的对象 | ★★★★★ |
依赖倒转原则(Dependence Inversion Principle, DIP) | 高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象 | ★★★★★ |
接口隔离原则(Interface Segregation Principle, ISP) | 客户端不应该依赖那些它不需要的接口 | ★★☆☆☆ |
合成复用原则(Composite Reuse Principle, CRP) | 优先使用对象组合,而不是继承来达到复用的目的 | ★★★★☆ |
迪米特法则(Law of Demeter, LoD) | 每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位 | ★★★☆☆ |
2. 创建型模式(记忆:工建原单,对对象的创建和使用)
- 简单工厂模式(Simple Factory)
- 结构:工厂角色,抽象产品角色,具体产品角色
- 类型:
- 说明:把所有需要实例化的对象放入一个工厂里,由工厂进行实例化
- 试用范围:没有太过于复杂的软件
- 工厂方法模式(Factory Method)
- 结构:抽象产品,具体产品,抽象工厂,具体工厂
- 类型:
- 说明:相对应于一个产品等级结构,也就是同一类型的对象和类,在简单工厂下再造具体工厂,负责一个品牌的同一类型
- 试用范围:比较广泛
- 抽象工厂模式(Abstract Factory)
- 结构:抽象工厂,具体工厂,抽象产品,具体产品
- 类型:
- 说明:相对应于一个产品族,也就是一个品牌的所有类和对象
- 试用范围:对于一个产品族
- 建造者模式(Builder)
- 结构:抽象建造者,具体建造者,产品角色,指挥者
- 类型:
- 说明:有复杂的内部结构,组成结构类似
- 试用范围:
- 原型模式(Prototype)
- 结构:抽象原型,具体原型,客户类
- 类型:深克隆(Serializable)浅克隆(Cloneable)
- 说明:可以通过一个已有对象复制获取更多的对象
- 试用范围:不是单例的情况
- 单例模式(Single