当我们掌握了Java 的语法,当我们了解了面向对象的封装、继承、多态等特性,当我们可以用 Swing、Servlet、JSP 技术构建桌面以及 Web 应用,不意味着我们可以写出面向对象的程序,不意味着我们可以很好的实现代码复用,弹性维护,不意味着我们可以实现在维护、扩展基础上的代码复用
一把刀,可以使你制敌于无形而于江湖扬名,也可以只是一把利刃而使你切菜平静
Java,就是这把刀,它的威力取决于你使用的方式
当我们陷入无尽无止重复代码的泥沼,当我们面临牵一发而动全身的维护恶梦, 你应该想起“设计模式”这个行动秘笈
面向对象的精义,看似平淡,其实要经过艰苦实践才能成功
而构造 OO 系统的隐含经验于是被前人搜集而成并冠以“设计模式”之名
我们应该在编码行动初始就携带以它
接下来,让我们步“四人组”先行者之后,用中国文字、用实际案例领略模式于我们代码焕然一新的改变: 设计模式解读之一:策略模式 1
模式定义 把会变化的内容取出并封装起来,以便以后可以轻易地改动或扩充部分,而不影响不需要变化的其他部分; 2
问题缘起 当涉及至代码维护时,为了复用目的而使用继承,结局并不完美
对父类的修改,会影响到子类型
在超类中增加的方法,会导致子类型有该方法,甚至连那些不该具备该方法的子类型也无法免除
示例,一个鸭子类型: public abstract class Duck { //所有的鸭子均会叫以及游泳,所以父类中处理这部分代码 public void quack() { System
println("Quack"); } public void swim() { System
println("All ducks float, even decoys
"); } //因为每种鸭子的外观是不同的,所以父类中该方法是抽象的,由子类型自己完成
public abst