设计模式解读的: 策略模式
1. 模式定义
把会变化内容取出并封装起来以便以后可以轻易地改动或扩充部分而不影响不需要变化其他部分;
2. 问题缘起
当涉及至代码维护时为了复用目而使用继承结局并不完美对父类修改会影响到子类型在超类中增加思路方法会导致子类型有该思路方法甚至连那些不该具备该思路方法子类型也无法免除举例个鸭子类型:
public abstract Duck
{
//所有鸭子均会叫以及游泳所以父类中处理这部分代码
public void quack
{
.out.prln("Quack");
}
public void swim
{
.out.prln("All ducks float, even decoys.");
}
//每种鸭子外观是区别所以父类中该思路方法是抽象由子类型自己完成
public abstract void display;
}
public MallardDuck extends Duck
{
//野鸭外观显示为绿头
public void display
{
.out.prln("Green head.");
}
}
public RedHeadDuck extends Duck {
//红头鸭显示为红头
public void display {
.out.prln("Red head.");
}
}
public RubberDuck extends Duck {
//橡皮鸭叫声为吱吱叫所以重写父类以改写行为
public void quack {
.out.prln("Squeak");
}
//橡皮鸭显示为黄头
public void display {
.out.prln("Yellow head.");
}
}
上述代码实现得非常好现在我们如果给Duck.java中加入fly思路方法话那么在子类型中均有了该思路方法于是我们看到了 会飞橡皮鸭子你看过吗?当然我们可以在子类中通过空实现重写该思路方法以解决该思路方法对于子类型影响但是父类中再增加其它思路方法呢?
="xspace-totlerecord">6="xspace-totlepages">1/6="xspace-current">123456>
最新评论