设计模式是一套经过反复使用的代码设计经验,目的是为了更好的复用代码,增加代码的阅读性,保证代码的可靠性和健壮性。每种模式都有相应的原理来与之对应,都是我们在现实编程中可能会遇到的问题,以及问题的解决方案,这就是为什么设计模式被广泛使用的原因。
为了更好的使用java的三大特性:封装,继承,多态。通过不同的封装继承方式,定义了23中经典的使用案例作为规范,这就是23中设计模式。这样做的可以更好的提高代码的复用性、扩展性,并且减少冗余代码。
一个类或者一个方法,只负责一类职责。在修改的时候可以控制变化的范围,使用的时候可以降低代码冗余,以及耦合度,避免使用者引入多余的对象。
当不同层级相互依赖的时候,应该依赖的是接口和抽象,而不应该依赖具体的实现类。这个可以结合开闭原则来理解,这样可以降低实现模块和客户的耦合度。
引入一个接口的时候,要尽量保证这个接口中的所有方法都是有用的。这个可以结合单一职责来理解,保证接口的职责单一,使用的时候就可以减少引入无用的方法。
比如:A接口中有6个方法,但是B只用到其中3个方法,C用到其中另外3个方法,就可以把A接口拆成A1和A2,每个里面只有3个方法。满足B和C的最低需要就可以了。
任何基类出现的地方,都可以使用子类替换。
这个是对开闭原则的补充,只有当基类可以被衍生类替换的,并且功能不受影响的时候,基类才能真正被复用。
并且可以约束继承泛滥,加强程序健壮性。
也叫最少知道原则,一个类应该对其他类尽量保持最少得了解,尽量减少相互作用。使各个模块之间相互独立,这样可以降低耦合度。类与类之间的关系越密切,那么耦合度就越大;
有的说这个是OOP的原则,有的说这个也是设计模式的原则。
尽量使用对象组合,而不是继承来达到复用的目的。
在一个新的对象里,通过关联关系(即合成或者聚合)使之成为新对象的一部分能力。新对象通过调用委派的方式来实现复用的目的。
组合/聚合可以使系统更加灵活,降低类与类之间的耦合度,避免滥用继承造成方法污染和方法爆炸。
方法污染指子类父类的行为传递给子类,但是子类并不具备执行此行为的能力。
方法爆炸指继承树不断扩大,底层方法过于繁杂,导致选择时候容易选错。
共5种
工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式
共7种:
适配器模式,装饰器模式,代理模式,桥接模式,外观模式,组合模式,享元模式
共11种:
策略模式,模板方法模式,观察者模式,责任链模式,访问者模式,中介者模式,迭代器模式,命令模式,状态模式,解释器模式,备忘录模式
未完待续