这几天正在看《frist-head设计模式》这本书感觉写的确实不错,内容通俗易懂!
下面是摘抄的书上面的第一个例子。
1:重点理解变化和不变化的部分
//超类Duck
public abstract class Duck {
FlyBehavior flyBehavior;
QauckBehavior qauckBehavior;
public void performQuack()
{
qauckBehavior.quack();
}
public void performFly()
{
flyBehavior.fly();
}
public void swim()
{
System.out.println("ALL duck float!!!!");
}
}
//飞的行为类
public interface FlyBehavior {
public void fly();
}
public class FlyingWithWing implements FlyBehavior{
public void fly() {
System.out.println("I can flying!!!");
}
}
public interface QauckBehavior {
public void quack();
}
public class Quack implements QauckBehavior{
public void quack() {
//内容
}
}
public class MallardDuck extends Duck{
//这里可以不在构造器中去实现,可以在Set方法法把变量给赋值。
//可以理解一下动态的设定他的行为的含义。
//如果放到Set方法中把Quack类或者FlyingWithWing作为参数传进去则可以完成
//动态设定他们的行为了。
public MallardDuck()
{
//qauckBehavior = new Quack();
//flyBehavior = new FlyingWithWing();
}
public void setQuackBehavior(Quack quack)
{
//内容
qauckBehavior = new Quack();
}
//外面调用
public void setQuackBehavior(FlyingWithWing flyWithWing)
{
//内容
flyBehavior = new FlyingWithWing();
}
}