【奔跑的菜鸟】Java中的设计模式——策略模式
来源:互联网 发布:人民币国际化知乎 编辑:程序博客网 时间:2024/05/13 15:55
Java的策略模式主要体现了两个非常基本的面向对象的设计原则。1.封装。2在编程中使用接口,而不是直接使用接口的实现。
策略模式的组成:1)抽象策略角色,通常为一个接口或抽象类。 2)具体策略角色,包装了相关算法和行为。3)环境角色,持有一个策略类的引用,最终给客户端调用
对于策略模式,算法和环境独立开来,修改算法不会影响环境和客户端。
看下面一个例子:
首先确定一个接口:
package test2;public interface Strategy{public int calculate(int a,int b);}
再对这个实现一些具体的方法(加减乘除):
package test2;public class AddStrategy implements Strategy{public int calculate(int a, int b){return a + b;}}
package test2;public class SubtractStrategy implements Strategy{public int calculate(int a, int b){return a - b;}}
package test2;public class MultipleStrategy implements Strategy{public int calculate(int a, int b){return a * b;}}
package test2;public class DivideStrategy implements Strategy{public int calculate(int a, int b){return a/b;}}
再设置一个环境:
package test2;public class Enviroment{private Strategy strategy ;public Enviroment(Strategy strategy){this.strategy = strategy;}public Strategy getStrategy(){return strategy;}public void setStrategy(Strategy strategy){this.strategy = strategy;}public int calculate(int a ,int b){return strategy.calculate(a,b);}}
最后客户端调用:
package test2;public class Client{public static void main(String[] args){AddStrategy add = new AddStrategy();Enviroment enviroment = new Enviroment(add);System.out.println(enviroment.calculate(6, 3));SubtractStrategy subtract = new SubtractStrategy();enviroment.setStrategy(subtract);System.out.println(enviroment.calculate(6, 3));MultipleStrategy multi = new MultipleStrategy();enviroment.setStrategy(multi);System.out.println(enviroment.calculate(6, 3));DivideStrategy divide = new DivideStrategy();enviroment.setStrategy(divide);System.out.println(enviroment.calculate(6, 3));}}
最后运行结果如下:
93182
0 0
- 【奔跑的菜鸟】Java中的设计模式——策略模式
- 【奔跑的菜鸟】Java中的设计模式——单例模式
- 【奔跑的菜鸟】Java的设计模式——装饰模式
- 菜鸟笔记之JAVA设计模式——策略模式的一点理解
- Java设计模式—策略
- Java设计模式——策略模式
- JAVA设计模式——策略模式
- java设计模式——策略模式
- JAVA设计模式——策略模式
- Java设计模式——策略模式
- Java设计模式——策略模式
- java设计模式——策略模式
- Java设计模式——策略模式
- Java设计模式——策略模式
- Java设计模式——策略模式
- Java设计模式——策略模式
- java设计模式——策略模式
- java设计模式——策略模式
- iOS10 权限崩溃问题
- 2013蓝桥杯省赛 颠倒的价牌
- C#综合揭秘——细说进程、应用程序域与上下文之间的关系
- HDOJ 5738 Eureka 数学原理
- markdown编辑器语法——字体、字号与颜色
- 【奔跑的菜鸟】Java中的设计模式——策略模式
- ViewConfiguration.getScaledTouchSlop () 用法
- python基础:读写文件和合并文件
- xml字节转换问题
- php后台开发民生支付
- Android 使用Kotlin 和 DataBinding 遇到 not access class问题
- Android ApkDemo
- mysql学习总结(一)---如何查看mysql的安装路径
- 序列化