1:何为设计模式?
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结可以被反复使用而且可靠性高。设计模式可以让你的程序可维护性高,可扩展性好。
2:为什么要学习设计模式?
复用解决方案——通过服用已有的设计模式,为自己的问题找到了更高的起点,避免了绕弯路。不必再为普遍,重复的问题重新设计解决方案。
建立通用的术语——交流与协作都需要一个共同的词汇基础,一个对问题共同的观点。设计模式在项目的分析和设计阶段提供了一个通用的参考点。
更高层次的视角——这样的视角将你从“过早处理细节”的“暴政”中解放出来。
模式本身就是对如何创建优良面向对象设计策略的实现:
1.针对接口编程
2.优先使用对象组合,而不是类继承
3.发现并封装变化点
abstract factory、adapter、strategy体现了针对接口编程,
composite、bridge体现了优先使用组合而不是继承等。
深入到具体模式的讨论,记录一些需要注意的问题:
1.Adapter与Facade模式的区别
它们都是包装器,但是两者也有细微的区别:
.两个模式中,我们都有已经存在的类(或者说系统)
.Facade模式中,我们无需针对接口编程;而Adapter模式我们必须针对接口编程
.Adapter模式通常是为了保持多态,而Facade模式对此不感兴趣
.动机不同,Facade模式是为了简化接口,而Adapter模式是针对一个现存的接口编程
结论:Facade模式简化接口,而Adapter模式将接口转换成另一个现有的接口
2.Bridge模式的理解
Bridge模式的意图是将抽象部分与它的实现部分分离,使它们可以独立的变化。这里的关键点是需要理解“实现部分”,如果把“实现部分”看成“对象外部、被对象使用的某种东西”,此模式就很好理解了。我们将变化转移到一个使用或者拥有变化的对象(此对象是指抽象类的对象和用来实现抽象类的派生类的对象)。当出现继承的类爆炸情况时,也许你该考虑此模式的应用场景了。
3.Strategy模式是一种定义算法家族的方法,所有的算法都做相同的工作,它们只是拥有不同的实现。当你的代码中出现了很多switch或者if else的语句,你应该考虑此模式。Strategy模式带来的缺点是类的数量的增加,在java中可以通过将实现类作为嵌套类放在Strategy抽象类中来解决。
4.singleton模式:
保证一个类有且仅有一个实例,并提供一个访问它的全局访问点
单线程应用:
第一种:静态初始化
public class Singleton {
private Singleton() {
}
private static Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
}
posted on 2008-06-11 19:46
天书 阅读(164)
评论(0) 编辑 收藏 引用