`
bianku
  • 浏览: 69664 次
  • 性别: Icon_minigender_1
  • 来自: 常州
社区版块
存档分类
最新评论

策略设计模式

    博客分类:
  • Java
阅读更多

第一次接触设计模式:

//interface
 interface FlyBehavior
{
	public void fly();
}
//interface的实现类
 class FlyWithWings implements FlyBehavior
{
	public void fly(){
	
	     System.out.println("I'm flying!");
	}
}

 class FlyRocketPowered implements FlyBehavior
{
	public void fly()
	{
		System.out.println("I'm flying with a rocket!");
	}
}

 class FlyNoWay implements FlyBehavior
{
	public void fly()
	{
	 System.out.println("I'm can't fly!");
	}

}
//鸭子super类
 abstract class Duck
{
	FlyBehavior flyBehavior;
	//QuackBehavior quackBehavior;
	public Duck(){
	}
	public abstract void display();
	public void performFly(){
	     flyBehavior.fly();
	}
	public void setFlyBehavior(FlyBehavior fb){
	
	     flyBehavior=fb;
	}

	public void swim(){
	     System.out.println("All ducks float,even decopys!");
	}
}
//MallardDuck类
 class  MallardDuck extends Duck
{
	public MallardDuck(){
	   
		flyBehavior =new FlyWithWings();
	}
	public void display(){
	
	    System.out.println("I'm a real mallard duck!");
	}
}
//ModelDuck类策略设计模式
 class ModelDuck extends Duck
{
	public ModelDuck()
	{
		flyBehavior=new FlyNoWay();
		
	}
	public void display(){
	
	   System.out.println("I'm a model duck");
	}
}
//鸭子模拟器  MiniDuckSimulator
public class All
{
 public static void main(String args[])

   {
       Duck mallard=new MallardDuck();//方便向下转型
       mallard.performFly();
	   
	   
	   Duck model=new ModelDuck();
	   model.performFly();
	   model.setFlyBehavior (new FlyRocketPowered());
	   model.performFly();
   }
}

 

分享到:
评论
1 楼 javamvp 2009-10-01  
看看    

相关推荐

Global site tag (gtag.js) - Google Analytics