设计模式之策略模式
来源:互联网 发布:java文件下载原理 编辑:程序博客网 时间:2024/04/28 02:56
Duck.java
package duck;import quack.QuackBehavior;import fly.FlyBehavior;public abstract class Duck { FlyBehavior flyBehavior; QuackBehavior quackBehavior; public Duck(){ } public abstract void display(); public void performFly(){ flyBehavior.fly(); } public void performQuack(){ quackBehavior.quack(); } public void swim(){ System.out.println("All ducks float, even decoys!"); } public void setFlyBehavior(FlyBehavior fb){ flyBehavior = fb; } public void setQuackBehavior(QuackBehavior qb){ quackBehavior = qb; }}
MallardDuck.java
package duck;import quack.Quack;import fly.FlyWithWings;public class MallardDuck extends Duck { public MallardDuck() { quackBehavior = new Quack(); flyBehavior = new FlyWithWings(); } @Override public void display() { System.out.println("I'm a real Mallard duck"); }}
ModelDuck.java
package duck;import quack.Quack;import fly.FlyNoWay;public class ModelDuck extends Duck { public ModelDuck() { flyBehavior = new FlyNoWay(); quackBehavior = new Quack(); } @Override public void display() { System.out.println("I'm a model duck"); }}
FlyBehavior.java
package fly;public interface FlyBehavior { public void fly();}
FlyNoWay.java
package fly;public class FlyNoWay implements FlyBehavior { @Override public void fly() { System.out.println("I can't fly"); }}
FlyRocketPowered.java
package fly;public class FlyRocketPowered implements FlyBehavior { @Override public void fly() { System.out.println("I'm flying with a rocket!"); }}
FlyWithWings.java
package fly;public class FlyWithWings implements FlyBehavior { @Override public void fly() { System.out.println("I'm flying!!"); }}
QuackBehavior.java
package quack;public interface QuackBehavior { public void quack();}
Quack.java
package quack;public class Quack implements QuackBehavior { @Override public void quack() { System.out.println("Quack"); }}
MuteQuack.java
package quack;public class MuteQuack implements QuackBehavior { @Override public void quack() { System.out.println("<<Silence>>"); }}
Squeak.java
package quack;public class Squeak implements QuackBehavior { @Override public void quack() { System.out.println("Squeak"); }}
0 0
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 选择PHP还是 ASP.NET:你做了正确选择么?(个人观点,但是也是受了行业内大多数人得影响吧)
- UVA - 11183 Teen Girl Squad(最小树形图)
- 同态滤波(Homomorphic filtering)
- 值得阅读的android技术文章
- 将等号作为键值的js字符串转json
- 设计模式之策略模式
- 平台使用
- Image
- UICollectionView
- android从应用到驱动之—camera(1)---程序调用流程
- 安装 Windows XP
- 试一下
- 【JS设计模式】JavaScript特性
- 8.17