职责链模式
例子可以为请假审批,首先有个抽象类还有具体的实现,抽象职责处理器还有不同处理实现子类,每个子类含有一个上级的对象,当本对象无法处理调用上级对象处理,但是这种模式要注意什么人没处理的情况,就是要做好范围控制
中介者模式
例子就是联合国,解决对象之间的强耦合,依赖其他对象才能完成操作的缺点。有个抽象对象和具体n个实现,每个实现类都带有中介类的引用,当实现类相互通信时,可以把信息发送到中介类对应引用的属性中,中介类抱有所有实现类的引用。
这样虽然解决了对象强耦合的关系,但是把业务量转移到了中介这个类上
享元模式
对象能复用就复用,如果能达到只用改变几个属性时尽量复用对象,就像string字符串常量池就是这么处理的
访问模式
主体分为操作类和访问者类,抽象访问者类根据抽象操作类分为不同的方法,操作者有一个执行操作的方法,调用访问类具体方法。流程主要是 new一个访问者类,new一个操作类,把访问类设入操作类,执行操作类的操作方法
解释器模式
其实就是简单抽象类和具体实现类的模型,每个实现类处理不同类型的数据
设计模式的原则
开放--封闭原则:对扩展开放,对修改封闭
依赖倒转原则:抽象不依赖细节,细节依赖抽象
迪米特原则:类之间尽量减少耦合,如果真的要相互联系,通过友元类来联系。最好的实践就是中介者模式和代理模式
组合聚合原则:在能用组合聚合原则的地方就尽量别用继承,也就是写成继承时要考虑好
总结来说,先考虑遵循原则再用设计模式