设计模式简介
设计模式分类
- 创建型,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
- 结构型,共七种:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
- 行为型,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
创建型模式
创建型模式就是创建对象的模式,抽象了实例化的过程。它帮助一个系统独立于如何创建、组合和表示它的那些对象。关注的是对象的创建,创建型模式将创建对象的过程进行了抽象,也可以理解为将创建对象的过程进行了封装,作为客户程序仅仅需要去使用对象,而不再关心创建对象过程中的逻辑结构型模式是为解决怎样组装现有的类,设计他们的交互方式,从而达到实现一定的功能的目的。
结构型模式
结构型模式包容了对很多问题的解决。例如:扩展性(外观、组成、代理、装饰)封装性(适配器,桥接)。
行为型模式
行为型模式涉及到算法和对象间职责的分配,行为模式描述了对象和类的模式,以及它们之间的通信模式。行为型模式刻画了在程序运行时难以跟踪的复杂的控制流,可分为行为类模式和行为对象模式。
- 行为模式使用继承机制在类间分派行为。
- 行为对象模式使用对象聚合来分配行为。一些行为对象模式描述了一组对等的对象怎样相互协作以完成其中任何一个对象都无法单独完成的任务。
各模式之间的关系
设计模式的六大原则
-
单一职责原则
定义:每个类只做一种类型的事
每个函数只实现一种功能
多于一个就应该进行拆分 -
里氏替换原则(继承的规范)
定义:所有引用基类的地方必须能透明地使用其子类的对象。
尽量不重写和重载父类方法
父类确定不能修改的方法应加final修饰(C#不加Virtual) -
依赖倒转原则
定义:面向接口编程
一个类具有多个public方法时,应考虑抽象出一个或多个接口 -
接口隔离原则
定义:每个接口不存在子类用不到却必须实现的方法,否则,就要将接口拆分
也符合单一职责原则,接口设计也应遵循 -
迪米特法则(最少知道原则)
定义:类对自己依赖的类知道的越少越好
无论类内部结构多复杂、依赖的类有好多,让外部调用时知道的越少越好,通过public方法提供外部调用,这样当被依赖的类发生变化,也尽量少的影响外部调用
API设计应该重点遵循此原则 -
组合复用原则
定义:尽量首先使用合成/聚合的方式,而不是使用继承
在类中声明其他类实例来完成某项功能,而不是继承这些类