操作型模式之Strategy(策略)模式
来源:互联网 发布:office替代软件 编辑:程序博客网 时间:2024/05/22 09:49
1.如果你期望封装一个操作,使其实现可以互相替换,可使用Strategy(策略)模式
2.举例
//策略抽象类public abstract class Strategy { abstract void doIt();}
//策略A类public class StrategyA extends Strategy{ @Override void doIt() { // TODO Auto-generated method stub System.out.println("StrategyA do it"); }}
//策略B类public class StrategyB extends Strategy{ @Override void doIt() { // TODO Auto-generated method stub System.out.println("StrategyB do it"); }}
//策略管理者:根据传来的策略类来决定使用哪个策略public class ContextManager { private Strategy strategy; public ContextManager(Strategy strategy) { // TODO Auto-generated constructor stub this.strategy = strategy; } public void doSomethings(){ strategy.doIt(); }}
//测试类:需要用户知道具体拥有哪些策略类public class Test { public static void main(String[] args) { Strategy sa = new StrategyA(); Strategy sb = new StrategyB(); ContextManager cma = new ContextManager(sa); cma.doSomethings(); ContextManager cmb = new ContextManager(sb); cmb.doSomethings(); }}
//结果StrategyA do itStrategyB do it
3.总结:Strategy(策略模式)模块的意图在于把可选的策略或方案封装在不同的类中,并在这些类中实现一个共同的操作。通过将可选的策略封装在单独的类中,并让每个类都实现一个共同的操作,我们可通过该模式创建一系列整洁而又简单的代码,以此来完成对各种解决问题的方案的建模。
4.Strategy(策略)模式与State(状态)模式区别
4.1 在对状态进行建模的时候,状态迁移是一个重要的方面;而在对策略进行建模的时候,迁移与策略的选择并不相关。
4.2 Strategy(策略)模式可能允许客户选择或者提供一个策略,而State(状态)模式无需客户知道具体状态。
5.参考:http://www.cnblogs.com/java-my-life/archive/2012/05/10/2491891.html
0 0
- 操作型模式之Strategy(策略)模式
- Java23模式之策略模式(Strategy)
- 【设计模式】之策略模式(Strategy)
- 设计模式之--策略模式(Strategy)
- 设计模式之策略(strategy)模式
- 设计模式之策略模式(Strategy)
- 设计模式之策略模式(Strategy)
- 设计模式之:策略模式(strategy)
- 设计模式之策略(Strategy)模式
- 设计模式之策略模式(strategy)
- 设计模式之策略模式(STRATEGY)
- 行为型模式之策略模式(Strategy)
- 11种行为型模式之:策略模式(Strategy)
- 行为型模式之策略模式(Strategy)
- 行为型模式-----策略模式(Strategy)
- Strategy模式(策略模式 行为型)
- 策略(Strategy)模式
- Strategy(策略)模式
- LeetCode 16 3Sum Closest
- <css二>text
- 深度学习和自然语言处理中的注意和记忆Attention and Memory in Deep Learning and NLP
- 8. 表的分割
- C 语言 —— debug(逻辑错误)
- 操作型模式之Strategy(策略)模式
- C#-正则表达式基础
- opencv计算图像互信息熵
- 更改wamp的mysql密码
- Oracle数据库--实用操作(2) 数据库对象
- 求逆元
- 使用TensorFlow实现一个文本分类的卷积神经网络Implementing a CNN for Text Classification in TensorFlow
- 初识linux
- [C++]单例模式应用