设计模式(一)策略模式
来源:互联网 发布:js二维数组动态赋值 编辑:程序博客网 时间:2024/06/07 14:59
- 定义
策略模式定义了算法族,分别封装起来,它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 - 设计原则
多用组合,少用继承:“有一个”可能比“是一个”更好。
针对接口编程:“针对接口编程”的真正意思是针对“超类型”编程,关键在于多态。
封装变化:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。 - UML
- 实现
/** * 抽象类-鸭子 */public abstract class Duck { private FlyBehavior flyBehavior; public Duck(FlyBehavior flyBehavior) { this.flyBehavior = flyBehavior; } public void fly() { flyBehavior.fly(); } public void setFlyBehavior(FlyBehavior flyBehavior) { this.flyBehavior = flyBehavior; }}
/** * 红头鸭-具体的鸭子 */public class ReadHeadDuck extends Duck{ public ReadHeadDuck(FlyBehavior flyBehavior) { super(flyBehavior); }}
/** * 接口-飞行行为 * 可以把每组行为想象成一个算法族 */public interface FlyBehavior { public void fly();}
/** * 接口实现类-用翅膀飞行(具体的行为) */public class FlyWithWings implements FlyBehavior{ @Override public void fly() { System.out.println("I am fly with wings"); }}
/** * 测试类-策略模式 */public class StrategyTest { public static void main(String[] args) { FlyBehavior flyBehavior = new FlyWithWings(); Duck duck = new ReadHeadDuck(flyBehavior); duck.fly(); }}
运行结果:
参考资料:
《Head First设计模式》
0 0
- 设计模式(一)Strategy - 策略模式
- 设计模式(一)策略模式
- Java设计模式(一) 策略模式
- 设计模式之策略模式(一)
- 设计模式----策略模式(一)
- 设计模式----策略模式(一)
- 设计模式(一)之策略模式
- 浅谈设计模式(一)策略模式
- 【HeadFirst设计模式】(一)策略模式
- 设计模式学习(一)策略模式
- 设计模式(一)策略模式
- 设计模式(一)-策略模式
- 设计模式学习(一)、策略模式
- java设计模式(一)-策略模式
- 设计模式一 策略模式
- 设计模式(一) 策略模式
- 设计模式一:策略模式
- javascript设计模式(一)单例模式 策略模式
- 快速击键游戏
- App架构设计经验谈:技术选型
- (蓝桥杯)基础练习 时间转换
- 【swift3实战】2048 教程(三)
- 高并发处理
- 设计模式(一)策略模式
- github上展示前端页面
- 不同linux电脑(集群节点)上文件的拷贝
- mysql数据库获取刚插入id,原生数据库
- google 开源框架常用jar 包地址下载
- Number数据类型
- 今天带来链表操作
- 使用docker来构建嵌入式开发环境
- h264检测是I帧还是P帧,解决录像第一帧有马赛克问题