Joe and Duck-------The Strategy Pattern

 Joe works for a company that makes a highly successful duck pond simulation game.The game can show a large varicty of duck species swimming and making quacking sounds.The initial designers of the systme used standard OO techniques and created  one Duck superclass from which all others duck types inherit.
  

 

duck class



      

Duck.class
public abstract class Duck{

    FlyBehavior flyBehavior;
    QuackBehavior quackBehavior;

    
public Duck(){
    }

    
public abstract void display();
    
    
public void performFly(){
       flyBehavior.fly();
    }

    
    pulbic 
void performQuack(){
       quackBehavior.quack();
    }


    pulbic 
void swim(){
       System.out.println(
"All ducks   flow,even decoys!")
    }

    
    }

 MallardDuck.class

public class MallardDuck extends Duck{

    
public MallardDuck(){
      quackBehavior
=new Quack();
      flyBehavior
=new FlyWithWings();
    }

    
//remember MallardDuck inherits the 
    
//quack  behavior and fly behavior
    
//instance variables from the base class

    
public void display(){
        System.out.println(
"I am a real   mallard duck ");
    }

}
 The Behaviors
public interface QuackBehavior{
   
public void quack();
}


public class Quack implements QuackBehavior{
   
public void quack() {
        System.out.println(
"Quack:);
  }

}


public class MuteQuack implements QuackBehavior{
    
public void quack (){
          System.out.println(
"<Silence>");
    }

}


public class Squeak implements QuackBehavior{
     
public void quack() {
           System.out.println(
"Squeak");
    }

}



//test

public class MiniDuckSimulator {
   
   
public static void main(string[] args){
      Duck mallard
=new MallardDuck();
      mallard.performQuack();
      mallard.performFly();
    }

}

posted on 2007-06-15 15:33  ewan  阅读(185)  评论(0)    收藏  举报

导航