设计模式入门笔记

FlyBehavior 接口及两个实现类FlyWithWings、FlyNoWay

<pre name="code" class="java">public interface FlyBehavior{
      public void fly();
}

public class FlyWithWings  implements FlyBehavior{
      public void fly(){
           System.out.println("I can flying !");
      }
}

public class FlyNoWay implements FlyBehavior{
       public void fly(){
             System.out.println("I cannot flying !");
       }
}
public class FlyRocketPowered implements FlyBehavior{
      public void fly(){
         System.out.println("I am flying with rocket !");
      }
}


 


父类Duck 

<pre name="code" class="java">public abstract class Duck {
     FlyBehavior flyBehavior;
     QuackBehavior quackBehavior;
     public abstract void display();
     public void performFly(){
           flyBehavior.fly(); 
     }
     public void performQuack(){
          quackBehavior.quack();
     }
     public void swim(){
          System.out.prilntln("all ducks float,even decoys !"); <span style="font-family: Arial, Helvetica, sans-serif;">    </span>
<pre name="code" class="java">     }
     public void setFlyBehavior(FlyBehavior fb){
           flyBehavior=fb;
     }
     public void setQuackBehavior(QuackBehavior qb){
           quackBehavior=qb;
     }
     
}


   

子类MallardDuck、ModelDuck


public class MallardDuck extends Duck(){
      public MallardDuck(){
      quackBehavior=new Quack();
      flyBehavior=new FlyWithWings();
      }
      public void display(){
            System.out.println("I am a real mallard duck !");
      }
}


public class  ModelDuck extends Duck(){
      public ModelDuck(){
          quackBehavior=new Quack();
          flyBehavior=new FlyNoWay();     
      }
      public void  display(){
          System.out.println("I am a real model  duck !"); 
     }
} 

测试类

<pre name="code" class="java">public class MiniDuckSimulator{
     public static void main(String[] args){
          Duck mallard=new MallardDuck();
          mallard.performFly();   <span style="font-family: Arial, Helvetica, sans-serif;"> //I can flying!</span>
          mallard.performQuack();  //Quack
          Duck model=new ModelDuck();
          model.performFly();  //I cannot flying!
          model.setFlyBehavior(new FlyRocketPowered());<span style="font-family: Arial, Helvetica, sans-serif;">         </span>
<pre name="code" class="html">          model.performFly(); //I am flying with rocket !
     }
} 


 

**来自head first设计模式 的第一章节代码整理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值