策略模式
来源:互联网 发布:动画软件tvp怎么用 编辑:程序博客网 时间:2024/06/08 16:53
策略模式startegy(对象行为型)
主要应用于 实现某一个功能有多种算法。我们可以根据不同的环境来切换不同的算法。
如果是硬编码,多个算法用if...else 等连接,那我如果新增一个算法,那么需要再修改程序中的源代码,以及修改客户端的调用代码。
这样,代码会很复杂,而且维护困难。
主要矛盾,解决如何使算法可以独立于使用它的客户,而进行变化。
策略模式,将对象本身 和 运算规则分开,其功能非常强大,本身核心思想就是面向对象的多形象思想。
适用于:
1.许多类都相似,只是行为有异。一个系统可以动态的在几种算法中选择一种。
2.客户不会知道算法的具体实现。
3.一个类定义多种行为。
环境类:维护对startegy类的引用。
抽象策略类:所有不同算法的共同接口。
具体策略类:实现具体的算法。
创建一个策略接口
public interface Strategy{ int calculate(int a , int b);}具体实现接口的多个算法。比如:加减乘除
public class Add implement Strategy{ public int calculate(int a , int b){ return a+b; }}环境类
public class Environment{ private Strategy strategy; public Environment(Strategy strategy){ this.strategy = strategy; } public void getStrategy(){ return this.strategy; } public Strategy setStrategy(Strategy strategy){ this.strategy = strategy; } public int calculate(int a , int b){ return this.strategy.calculate(a , b); }}客户端调用
main{ Add add = new Add(); Environment enviroment = new Environment(add); enviroment.calculate(3,4);}
这个模式,就是将所有的算法封装好。但是客户端需要知道所有的算法,然后来使用。增加了客户端的使用难度。
0 0
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- numpy 学习笔记(1)
- Spring源码解析
- 概率图模型学习(3)——贝叶斯网与马尔科夫网的关联
- C++14特性
- 采用TCP协议的C/S架构实现API详解
- 策略模式
- ios开发FMDB导入SQLCipher加密数据库
- windows7+eclipse+hadoop2.5.2环境配置
- 关于dispatch_semaphore的使用
- java IO流
- SpringMVC学习系列(4) 之 数据绑定
- iptables
- Oracle DG failover 后恢复
- UIViewController-Swizzled【iOS源码阅读】