posted @ 2008-05-19 22:19 sdl 閱讀(3468) | 評論 (0) | 編輯 收藏
這幾天正在看《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();
}
}
posted @ 2008-05-19 22:08 sdl 閱讀(129) | 評論 (0) | 編輯 收藏