设计模式
简介
什么是设计模式?设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
目的
更好的复用代码,使其更容易被理解,便于维护。
设计模式的六大原则
一,开闭原则
对扩展开放,对修改关闭
可复用性好,因为扩展开放,我们可以添加新功能。且因为对修改关闭,我们在维护时就可以不考虑抽象底层。
二,里氏代换原则
子类可以完全替代基类
只有满足了里氏代换原则,才能开始代码复用,里氏代换原则确保了子类能够完美替代基类,而不影响功能,这样我们就可以在子类中进行扩展了。从这点看里氏代换原则是开闭原则的一种实现方式。
三,依赖倒转原则
针对接口编程,依赖于抽象而不依赖于具体
一般而言,抽象层的变化的可能性很小,让客户程序依赖于抽象,实现依赖于抽象,实现发生改变是不会影响到抽象的,只要抽象层不变,客户程序就不变,这样就可以降低抽象底层和客户程序之间的耦合。
四,接口隔离原则
一个类对另外一个类的依赖性应当是建立在最小的接口上
也就是说接口只提供给客户程序需要的方法,不要强迫客户程序使用那些不需要使用的方法,以避免客户程序使用这些方法后产生不必要的错误。
五,最少知道原则(迪米特原则)
一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立
最少知道原则的目的是每个类都都尽可能少的和其他类产生依赖,使系统模块之间相对独立,不具有或者很少有依赖。并且类和类之间最好通过友元类或者中介类来建立联系,不过这样也可能会导致系统中出现过多的友元类,中介类。
六,合成复用原则
尽量使用合成/聚合的方式,而不是使用继承
继承复用有一个明显的缺点,就是当我们又该基类时,所有的子类都会发生改变。所以我们应该尽量采用合成/聚合的方式,在新对象里使用已有的对象,是指成为新对象的一部分,从而达到复用的效果,降低类之间的耦合。
设计模式的类型
一,创建型
关注对象的创建,以期在需要的时候能更加灵活的创建对象。包括以下:
工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
二,结构型
关注对象之间的结构,减少继承,期望通过各种结构来组合复用对象。包括以下:
适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式
三,行为型
关注对象之间的通信,减少对象之间的依赖,降低耦合。包括以下:
策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式