我们在编程时一直在使用设计模式却很少意识到,今天趁空闲对最近常用的几个设计模式做个总结:
适配器模式:
将一个类的接口转换为客户希望的另外一个类的接口。它使得原本因为接口不兼容而不能在一起工作的俩个类能一起工作。(多加一层封装)
组合模式:
将具有整体-部分结构的对象组合成树形结构,它使得用户在使用单个对象和组合对象时具有一致性。(整体-部分关系,contains-a关系,借助于继承实现覆盖共有方法)
模版方法:
定义了一个算法的骨架,将算法中的一个子步骤延迟到子类中去实现。这样可以在不改变算法结构的情况下,重新定义算法的某些特定步骤。(继承抽象类)
策略模式:
(在一个类的多个子类中)分别封装算法,算法间可以相互替换,一个算法的改变不会影响其他算法。(继承)
单例模式:
提供一个全局访问点。可以使用双重锁定获取一个静态实例,避免多线程引起的问题:
1. public static LogUtil getInstance() {
2. if (sLogUtil == null) {
3. synchronized (LogUtil.class) {
4. if (sLogUtil == null) {
5. sLogUtil = new LogUtil();
6. }
7. }
8. }
9. return sLogUtil;
10. }
组合模式侧重于组合(整体-部分的关系)。模版方法侧重于将算法特定步骤推迟入子类实现,以不改变算法架构。策略模式侧重于算法的选择,使算法间可以相互替换并相互独立(算法步骤改变,彼此互不影响)。