设计模式
来源:互联网 发布:伊藤绫子二宫和也 知乎 编辑:程序博客网 时间:2024/06/18 07:20
试用场景
实现一个小游戏
设计场景:我们已经有了一群鸭子的类
要给 每个不同的鸭子增加飞行,那么我们需要怎么做?
图解各鸭子的不同
设计超类
/** * 超类,所有的鸭子都要继承次类 * 抽象了鸭子的行为:显示与鸣叫 */public abstract class Duck { /** * 鸭子发出的叫声 * 通常行为,由抽类实现 */ public void quack(){ System.out.println("嘎嘎嘎嘎"); } /** * 每个鸭子的展示不同 */ public abstract void diaplay(); /** * 飞行策略 */ private FlyingStragety flyingStragety; public void setFlyingStragety(FlyingStragety flyingStragety) { this.flyingStragety = flyingStragety; } /** * 飞行 */ public void fly(){ flyingStragety.performFly(); }}
飞行策略
/** * 飞行策略接口 */public interface FlyingStragety { void performFly();}/** * 不会飞的鸭子 */public class NotFly implements FlyingStragety { @Override public void performFly() { System.out.println("不会飞"); }}/** * 振翅高飞 */public class HighFly implements FlyingStragety{ @Override public void performFly() { System.out.println("振翅高飞...."); }}/** * 穿太空衣服飞行 */public class SpaceFly implements FlyingStragety { @Override public void performFly() { System.out.println("穿太空衣飞行"); }}
为每个鸭子添加不同的飞行策略
/** * 小黄鸭 */public class MunchkinDuck extends Duck{ public MunchkinDuck(){ super.setFlyingStragety(new NotFly()); } @Override public void quack() { System.out.println("我不会叫~"); } @Override public void diaplay() { System.out.println("小黄鸭:我全身都是黄色...."); }}/** * 绿色鸭子 */public class GreenDuck extends Duck { public GreenDuck(){ super.setFlyingStragety(new HighFly()); } @Override public void diaplay() { System.out.println("我全身都是原谅色~"); }}/** * 太空鸭 */public class SpaceDuck extends Duck { public SpaceDuck(){ super.setFlyingStragety(new SpaceFly()); } @Override public void quack() { System.out.println("无线电通信"); @Override public void diaplay() { System.out.println("我穿着太空服"); }}
调用代码测试
//小黄鸭 Duck duck = new MunchkinDuck(); duck.diaplay(); duck.quack(); duck.fly();//小黄鸭输出结果 小黄鸭:我全身都是黄色.... 我不会叫~ 不会飞
//小绿鸭 Duck duck = new GreenDuck(); duck.diaplay(); duck.quack(); duck.fly(); //输出结果 我全身都是原谅色~ 嘎嘎嘎嘎 振翅高飞....
//太空鸭 Duck duck = new SpaceDuck(); duck.diaplay(); duck.quack(); duck.fly();//输出结果 我穿着太空服 无线电通信 穿太空衣飞行
阅读全文
0 0
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式~~~~~~~~~~
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 设计模式
- 获取list集合中的最大最小值
- Oracle数据库锁机制
- 做了十年程序员,他或许可以告诉你什么
- 水仙花数
- 地址和指针的不解之缘之都是翻译惹的祸
- 设计模式
- 什么样的人当不好程序员?有你吗?
- Java编程思想(第4版) 中文清晰PDF完整版
- Java关键字abstract
- 第26篇.u盘安装系统
- 测试csdn markdown写作体验
- 解决多线程中hibernate出现no session问题
- thymeleaf模板的使用
- 我很忙,我没有时间,所以我无法成为更有价值的人