策略模式Java实现
来源:互联网 发布:美图秀秀抠图软件下载 编辑:程序博客网 时间:2024/04/29 10:52
策略模式 —— 模拟鸭子游戏
现状
公司做了一套模拟鸭子游戏:SimUDuck。游戏中会出现各种鸭子,一边游泳戏水,一边呱呱叫。
此时有三个类:
- Duck:鸭子父类
Duck { quack(); // 呱呱叫 swim(); // 游泳 display(); // 外观,每一种鸭子都不同}
- MallardDuck:外观绿头的鸭子
- ReadheadDuck:外观红头的鸭子
需求
要让鸭子会飞
存在的问题
- 并不是所有的鸭子都会飞
- 鸭子的叫声有:呱呱(quack)、吱吱(squeak)
错误的解决办法
办法1:在Duck中添加方法fly(),然后所有鸭子继承Duck
办法2:抽出两个接口Flyable, Quackable,所有鸭子根据属性选择实现这两个接口与否
上述的两个办法存在的问题:
- 代码在多个子类中重复
- 很难知道所有鸭子的全部行为
- 运行时的行为不容易改变
- 改变会牵一发动全身,造成其他鸭子不想要的改变
解决办法:采用策略模式(Strategy Pattern)
策略模式:策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
运行结果:
三个设计原则
- 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起
- 针对接口编程,而不是针对实现编程
- 少用组合,多用继承
GitHub地址:https://github.com/linpeiyou/design-patterns-java
0 0
- 策略模式-java实现
- 策略模式 java实现
- 策略模式Java实现
- Java 实现策略模式
- Java 实现策略(Strategy)模式
- 策略模式(使用Java实现)
- 设计模式-策略模式 java实现
- Java实现设计模式之策略模式
- 设计模式--策略模式--Java实现
- 大话设计模式--java实现策略模式
- Java记录 -68- Java实现策略模式
- KMP算法java实现之策略模式
- 策略模式的java实现例子
- Java函数式编程实现策略模式
- 设计模式:策略模式的实现 c++ 与 java
- 《大话设计模式》读书笔记:策略模式+反射的Java实现
- 大话设计模式2 策略模式 的java代码实现
- 《大话设计模式》读书笔记:策略模式+反射的Java实现
- 图像的频域滤波-高通滤波
- apt-get相关命令
- 图片上传后预览
- bzoj 1646 bfs
- [翻译]什么是tensorflow的session
- 策略模式Java实现
- 微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET)
- 30分钟概览Spark分布式计算引擎
- 登录型爬虫的写法
- python学习笔记3--dict和set
- 学习笔记——自定义Dialog
- 文章标题
- c语言HTTP服务器,超级简易版。
- 超强、超详细Redis入门教程