设计模式入门笔记

来源:互联网 发布:手机淘宝装修软件 编辑:程序博客网 时间:2024/05/19 19:40

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
原创粉丝点击