设计模式-策略模式-代码实现
2018-02-03 00:00
363 查看
------------------------------------关于飞的行为类------------------------------
1.FlyBehavior.java
package Duck; public interface FlyBehavior{ public void fly(); }
2.FlyNoWay.java
package Duck; public class FlyNoWay implements FlyBehavior{ public void fly(){ System.out.println("I can't fly."); } }
3.FlyWithWings.java
package Duck; public class FlyWithWings implements FlyBehavior{ public void fly(){ System.out.println("I'm flying!"); } }
4.FlyRocketPowered.java
package Duck; public class FlyRocketPowered implements FlyBehavior{ public void fly(){ System.out.println("Fly Rocket Powered."); } }
-------------------------------------------关于叫的行为类---------------------------------------
1.QuackBehavior.java
package Duck; public interface QuackBehavior{ public void quack(); }
2.Quack.java
package Duck; public class Quack implements QuackBehavior{ public void quack(){ System.out.println("嘎嘎叫."); } }
3.Squeak.java
package Duck; public class Squeak implements QuackBehavior{ public void quack(){ System.out.println("吱吱叫!"); } }
4. MuteQuack.java
package Duck; public class MuteQuack implements QuackBehavior{ public void quack(){ System.out.println("不会叫!"); } }
--------------------------------------不同种类的鸭子--------------------------------------
1.Duck.java
package Duck; public abstract class Duck{ FlyBehavior flyBehavior; QuackBehavior quackBehavior; public void performQuack(){ quackBehavior.quack(); } public void performFly(){ flyBehavior.fly(); } public void setFlyBehavior(FlyBehavior fb){ flyBehavior = fb; } public void setQuackBehavior(QuackBehavior qb){ quackBehavior = qb; } }
2.ModelDuck.java
package Duck; public class ModelDuck extends Duck{ public ModelDuck(){ flyBehavior = new FlyNoWay(); quackBehavior = new MuteQuack(); } }
3.MallardDuck.java
package Duck; public class MallardDuck extends Duck{ public MallardDuck(){ flyBehavior = new FlyWithWings(); quackBehavior = new Quack(); } }
---------------------------测试----------------------------
1.Test.java
package Duck; public class Test{ public static void main(String[] args) { Duck mallardDuck = new MallardDuck(); mallardDuck.performFly(); mallardDuck.performQuack(); Duck modelDuck = new ModelDuck(); modelDuck.performFly(); modelDuck.performQuack(); modelDuck.setFlyBehavior(new FlyRocketPowered()); modelDuck.performFly(); } }
-----------------------------运行结果-----------------------------
相关文章推荐
- 从“假如有以下几种价格10,20,50,请你代码实现将他们排序输出”看设计模式中的策略模式
- 从“假如有以下几种价格10,20,50,请你代码实现将他们排序输出”看设计模式中的策略模式
- 设计模式----策略模式UML和实现代码(5个必须掌握的设计模式)
- 从“假如有下面几种价格10,20,50,请你代码实现将他们排序输出”看设计模式中的策略模式
- HEAD_FIRST设计模式学习 ----策略模式 c++简单实现代码
- 设计模式-代理模式与适配器模式实现代码重用以及策略模式的使用
- 设计模式C++实现(2)——策略模式
- 设计模式----桥接模式UML和实现代码
- 设计模式之使用Enum来实现strategy(策略模式系列2)
- 设计模式之迭代器模式java实现代码
- 《大话设计模式》读书笔记(C++代码实现) 第二章:策略模式
- 设计模式----单例模式UML图和代码实现(C#&JAVA)
- 设计模式—关系在代码中实现
- 模板设计模式,简单Java代码实现
- 设计模式----中介者模式UML和实现代码
- Java设计模式菜鸟系列(一)策略模式建模与实现
- 设计模式之实现---策略模式
- 设计模式之策略模式的C++实现
- 设计模式之策略模式(包含与简单工厂模式的区别,实现了超市结账系统)
- 设计模式----组合模式UML和实现代码