面向对象编程(OOP)的基本概念有 封装,抽象,继承, 多态等,如何开发出可复用的面向对象软件一直困扰着软件开发人员。
可复用的面向对象技术包括 类的继承,对象的组合 和参数化类型 (Generic), GoF的巨著《设计模式》总结出可复用的面向对象的23个设计模式, 并且归类成 创建型模式,结构型模式和行为型模式.
创建型模式抽象了对象创建,隐藏了类的信息和如何创建类的实例, 包括:
- 抽象工厂模式(Abstract Factory)
- 生成器(Builder)
- 工厂方法(Factory Method) 包括简单工厂方法(Simple Factory)
- 原型(Prototype)
- 单件(Singleton)
结构型模式涉及到如何组合类和对象以获得更大的结构。结构型类模式采用继承机制来组合接口或实现;结构型对象模式描述了如何对一些对象进行组合,从而实现新功能的一些方法。包括:
行为模式涉及到算法和对象间职责的分配。行为类模式使用继承机制在类间分派行为;行为对象模式使用对象复合而不是继承。包括:
- 责任链(Chain of Responsibility)
- 命令(Command)
- 解析器(Interpreter)
- 迭代器(Iterator)
- 中介者(Mediator)
- 备忘录(Memento)
- 观察者(Observer)
- 状态(State)
- 策略(Strategy)
- 模板方法(Template Method)
- 访问者(Visitor)
Specification 规格模式,结合Builder, Factory Method, Composite, Interpreter案例
面向对象的设计原则:
- 单一职责原则IRP
- 开放闭合原则OCP
- 里氏替换原则LSP
- 依赖倒置原则DIP
- 接口隔离原则ISP
-
迪米特法则 LKP(最少知识原则)
-
Tell,Don't Ask
-
KISS
-
YAGNI
-
DRY
-
信息专家模式
-
奥卡姆剃刀原理