1 / 11
文档名称:

鸭子Java.doc

格式:doc   大小:77KB   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

鸭子Java.doc

上传人:kt544455 2019/8/31 文件大小:77 KB

下载得到文件列表

鸭子Java.doc

文档介绍

文档介绍:用户名:会疼的白痴密码:521975123策略模式的设计原则如下:   1.  将应用中需要经常变化的代码独立出来,应和那些不需要经常变化的代码分开。   2.  应针对接口,而不是类进行编程。   3.  在类中应多用组合,少用继承。   例子:   我们要实现一个鸭子模拟器,这个鸭子模拟器由Duck类描述,而Duck类有如下4个行为:   1.  display   2.  swim   3.  fly(飞)   4.  quack(叫)   其中swim是所有鸭子都具有的特性,而且所有鸭子的这些特性都相同,因此,这个方法可以直接在Duck类中实现。display方法也是所有鸭子具有的特性,但随着鸭子的种类不同,display也有所不同,因此,display方法应为Duck类的抽象方法。fly和quack并不是所有鸭子的特性,如橡皮鸭子即不会飞,也不会叫。因此,可以将这两个方法看作是两个行为,可将每一个行为设计成一个接口。这样可以和Duck类完全脱离。因为,fly和quack与Duck一点关系都没有(别的东西也可能fly和quack),然后不同的fly和quack分别用实现相应接口的类表示。fly行为    //  飞行接口      public interface FlyBehavior. {      public void fly();  }      //  飞      public class FlyWithWings implements FlyBehavior. {      public void fly() {          ("正在用翅膀飞行");      }  }      //  不飞      public class FlyNoWay implements FlyBehavior. {      public void fly() {          ("不会飞");      }  }  //坐火箭飞  public class FlyRocketPowered implements FlyBehavior. {      public void fly() {          ("坐火箭飞");      }  }  fly行为//飞行接口publicinterfaceFlyBehavior.{publicvoidfly();}//lassFlyWithWingsimplementsFlyBehavior.{publicvoidfly(){("正在用翅膀飞行");}}//lassFlyNoWayimplementsFlyBehavior.{publicvoidfly(){("不会飞");}}//lassFlyRocketPoweredimplementsFlyBehavior.{publicvoidfly(){("坐火箭飞");}}quack行为<BR><PRE class=java name="code">    //  叫接口      public interface QuackBehavior. {      public void quack();  }      // 嘎嘎叫      public class Quack implements QuackBehavior. {      public void quack() {          ("嘎嘎叫");      }  }      //  吱吱叫      public class Squeak implements QuackBehavior. {      public void quack() {          ("吱吱叫");      }  }      //  不叫      public class MuteQuack implements QuackBehavior. {      public void quack() {          ("不会叫");      }  }</PRE><PRE class=java name="code"></PRE>实现Duck类  quack行为复制打印//  叫接口  public interface QuackBehavior. {  public void quack();    // 嘎嘎叫  public cl