Strategy パターン
Strategy パターン
Step 2 オーバーライド
MiniDuckSimulator
Step 1public class MiniDuckSimulator { public static void main(String[] args) { MallardDuck mallard = new MallardDuck(); RedHeadDuck redhead = new RedHeadDuck(); mallard.display(); mallard.performQuack(); mallard.performFly(); System.out.println(); redhead.display(); redhead.performQuack(); redhead.performFly(); } }
Step 2
public class MiniDuckSimulator { public static void main(String[] args) { MallardDuck mallard = new MallardDuck(); RedHeadDuck redhead = new RedHeadDuck(); RubberDuck rubber = new RubberDuck(); // 追加 DecoyDuck decoy = new DecoyDuck(); // 追加 mallard.display(); mallard.performQuack(); mallard.performFly(); System.out.println(); redhead.display(); redhead.performQuack(); redhead.performFly(); System.out.println(); // 追加 rubber.display(); rubber.performQuack(); rubber.performFly(); System.out.println(); // 追加 decoy.display(); decoy.performQuack(); decoy.performFly(); } }
Duck
public abstract class Duck { public Duck() { } abstract void display(); public void performFly() { System.out.println("I'm flying!!"); } public void performQuack() { System.out.println("Quack"); } }
MallardDuck
public class MallardDuck extends Duck { public MallardDuck() { } public void display() { System.out.println("I'm a real Mallard duck"); } }
RedHeadDuck
public class RedHeadDuck extends Duck { public RedHeadDuck() { } public void display() { System.out.println("I'm a real Red Headed duck"); } }
RubberDuck
追加public class RubberDuck extends Duck { public RubberDuck() { } public void display() { System.out.println("I'm a rubber duckie"); } // オーバーライド public void performFly() { System.out.println("I can't fly"); } // オーバーライド public void performQuack() { System.out.println("Squeak"); } }
DecoyDuck
追加public class DecoyDuck extends Duck { public DecoyDuck() { } public void display() { System.out.println("I'm a duck Decoy"); } // オーバーライド public void performFly() { System.out.println("I can't fly"); } // オーバーライド public void performQuack() { System.out.println("<< Silence >>"); } }
実行結果
I'm a real Mallard duck Quack I'm flying!! I'm a real Red Headed duck Quack I'm flying!! I'm a rubber duckie Squeak I can't fly I'm a duck Decoy << Silence >> I can't fly