从零开始学习设计模式——策略模式
来源:互联网 发布:git linux 安装 编辑:程序博客网 时间:2024/06/15 12:14
写这个模式之前,实在是觉得策略模式和静态工厂模式很像,无非就是从父类中抽象中公用的方法,然后在实体类中重写具体的实现。但其实这两者的区别还是有的,从关注的点来说,静态工厂关注实例化的对象,而策略模式则更关注方法中不同的实现,先上代码吧。
抽象类和实现的实体,与静态工厂一样。
抽象类:
abstract class Operation {public abstract void AlgorithmInterface();}实现类:
public class OperationAdd extends Operation{@Overridepublic void AlgorithmInterface() {// TODO Auto-generated method stubSystem.out.println("加法运算");}}
public class OperationSub extends Operation {@Overridepublic void AlgorithmInterface() {// TODO Auto-generated method stub//减法运算System.out.println("减法运算");}}上下文类:
public class OperationContext {private Operation operation;public OperationContext(String type){switch (type) {case "add":OperationAdd operationAdd = new OperationAdd();operation = operationAdd;break;case "sub":OperationSub operationSub = new OperationSub();operation = operationSub;break;default:break;}}public void getResult(){operation.AlgorithmInterface();}}
客户端代码:
public class MainClass {public static void main(String[] args) {// TODO Auto-generated method stubOperationContext context = new OperationContext("add");context.getResult();}}
其实区别最大的就是客户端的部分,我们来对比静态工厂:
public class MainClass {public static void main(String[] args) {// TODO Auto-generated method stubOperation operation= new OperationFactory.create("add");}}对于策略模式,我们只需要了解OperationContext这一个类,所有和这个类相关的算法都封装在这个类里,这个类可以看做是所有算法的集合类,而在工厂模式中,除了关注工厂类,还需要关注算法的父类Operation,显然,从算法的角度来说,策略模式的耦合度更低。
0 0
- 从零开始学习设计模式——策略模式
- 设计模式从零开始——策略模式
- 设计模式学习——策略模式
- 设计模式学习—策略模式
- 设计模式学习笔记—策略模式
- 从零开始学习设计模式——简单工厂模式
- 从零开始学习设计模式——装饰者模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- 设计模式—策略模式
- python2和python3注意事项
- zookeeper入门(一)——ZooKeeper伪集群安装
- 2.Add Two Numbers
- Unix/Linux 只有一个进程实例
- virtualenv的安装以及使用
- 从零开始学习设计模式——策略模式
- 使用github for windows上传项目及拷贝项目
- 配置hadoop时,Linux主机名称不要带有下划线
- Liuctic计算几何库
- 分布式系统架构
- poj1703 并查集
- 7.14 编一个程序,将两个字符串s1和s2进行比较。
- HDU:5615 Jam's math problem(暴力,数学)
- POJ 2029 Get Many Persimmon Trees