设计模式
最近看了一些关于spring框架的材料,发现其中涉及很多设计模式的东西没有接触过。在此着重补习一下常用的设计模式。
参考大佬微博https://www.cnblogs.com/K-artorias/category/1115270.html
。
创建型:~~~~~~~~~
单例模式
class single{ private single(){} private static single s; public static synchronized single getInstance(){ if(s==null){ s = new single(); } return s; } }
工厂模式
原型模式:
- 实现Cloneable接口。
- 重写Object类中的clone方法。
建造者模式:封装一个对象的构造过程,并允许按步骤构造
。
结构型:~~~~~~~~~~~
装饰器模式:创建装饰器类,将待包装类注入进来增加新的行为。
适配器模式(适配对应的类,调用相应类的对象进行操作):提供适合对象的接口(hashset内部是hashmap)
桥接模式:(两个维度变化与扩展)
使用场景
1、如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。
2、对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。
3、一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。
总结
1、桥接模式实现了抽象化与实现化的脱耦。他们两个互相独立,不会影响到对方。
2、对于两个独立变化的维度,使用桥接模式再适合不过了。
3、对于“具体的抽象类”所做的改变,是不会影响到客户。
过滤器模式:与适配器相似,符合类型的留下(通用接口+实现类的if判断)
组合模式:同一对象的具有层次结构的不同实现,在每个父节点内维护一个包含其子节点的列表,整体是树状结构。
代理模式:为其他对象提供一种代理以控制对这个对象的访问。
外观模式:将子系统封装,使得客户对象需要交互的对象尽可能少。(经典例子是开关电脑方法)
。
行为型:~~~~~~~~~~
通知模式
责任链模式:每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。
命令模式:请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。(行为请求者与行为实现者解耦合)
空对象模式:每次返回空的时候返回同一个对象——空对象
命令模式
状态模式
模板方法模式