这段时间比较闲,看了下设计模式的书,说来惭愧,出来这么久了,还真没系统认真的看过这些。
模式的出发点:封装变化(没有变化的不用模式也是合理的)
原则:1-找出变化点,封装它; 2-依赖倒置,高层、底层均应该依赖抽象;3-针对接口编程而不是具体的实现;4-多用组合,少用继承;5-对扩展开放,对修改关闭
1:策略模式
封装算法的模式,把一些会变化的算法独立出来,从而构造一个算法族(有个相同的接口),以便在运行时(客户使用时)能相互替代。
2:观察者模式
一种对象间的交互/通知的模式,对象的交互是任何系统都不可避免的,当条件满足(eg:状态变化)时,需要和对象s交互/通知的场景就可以用到这个模式,据说B/S模式不太适合。
3:工厂模式(简单工厂、工厂方法、抽象工厂)
前提:遵循开闭原则
简单工厂:没有任何扩展性;
工厂方法:可以扩展任意其他产品
抽象工厂:可以扩展其他系列的(家族的)产品
4: 装饰模式
当你需要灵活的扩展一些已存在的功能时 可以考虑使用这个模式,简单来说就是包装一个对象,从而能调用该对象的功能,同时加上自己的额外处理,类似递归调用(即要求自己和包装的对象有相同的类型--类、接口)。
5:命令模式
为调用者(1)和被调用者(N)提供一个中间体,1---I中间体(1....N)-----N,从而简化调用者需要知道的知识,从而解耦。
6:单件模式
这个没什么说的,很简单,实现时注意线程安全即可。(双lock、同步)
7:适配器模式
把一个不符合要求的接口的对象功能包装成另一个符合要求的接口的对象,注意和装饰模式的区别,装饰模式:包装者和源对象的类型一致;适配器模式:和源对象的类型不同。
8:模板方法
包装(统一)了多个算法的交互,但各算法具体如何实现,则交给子类实现。