设计模式总结篇系列:策略模式(Strategy)
2014-06-05 00:43
537 查看
前面的博文中分别介绍了Java设计模式中的创建型模式和结构型模式。从本文开始,将分别介绍设计模式中的第三大类,行为型模式。首先我们了解下分为此三大类的依据。
创建型模式:主要侧重于对象的创建过程;
结构型模式:主要侧重于处理类或对象的组合;
行为型模式:主要侧重于类或对象之间的交互以及职责分配。
首先了解下策略模式的概念:定义了多个算法,并将它们封装起来(一般的是每个算法封装成一个单独的类),让算法独立于客户端而可以单独变化。
具体可以看一下下面的例子(以计算加、减、乘为例):
1. 对加、减、乘每个算各自封装成一个类,首先定义其共同的接口:
2. 分别定义加、减、乘算法类:
3. 定义上下文环境类,用于封装各个算法类操作:
4. 测试:
创建型模式:主要侧重于对象的创建过程;
结构型模式:主要侧重于处理类或对象的组合;
行为型模式:主要侧重于类或对象之间的交互以及职责分配。
首先了解下策略模式的概念:定义了多个算法,并将它们封装起来(一般的是每个算法封装成一个单独的类),让算法独立于客户端而可以单独变化。
具体可以看一下下面的例子(以计算加、减、乘为例):
1. 对加、减、乘每个算各自封装成一个类,首先定义其共同的接口:
interface ICalculator{ public int calculator(int a, int b); }
2. 分别定义加、减、乘算法类:
class Plus implements ICalculator { @Override public int calculator(int a, int b) { return a + b; } }
class Minus implements ICalculator { @Override public int calculator(int a, int b) { return a - b; } }
class Multiply implements ICalculator { @Override public int calculator(int a, int b) { return a * b; } }
3. 定义上下文环境类,用于封装各个算法类操作:
class Context{ private ICalculator iCalculator; public Context(ICalculator iCalculator){ this.iCalculator = iCalculator; } public int calculator(int a, int b){ return iCalculator.calculator(a, b); } }
4. 测试:
public class StrategyTest { public static void main(String[] args) { Context context = new Context(new Plus()); context.calculator(2, 3); } }
相关文章推荐
- 设计模式系列1-----C++实现策略模式(Strategy)
- 实战设计模式系列-Strategy(策略)
- 设计模式学习总结(一)策略模式Strategy Pattern
- 设计模式学习系列十四:策略模式(Strategy)
- 设计模式随笔系列:鸭子-策略模式(Strategy)[原]
- java设计模式(精通系列)-策略模式(Strategy)
- 设计模式随笔系列:鸭子-策略模式(Strategy)[转]
- C#设计模式系列:策略模式(Strategy)
- 设计模式随笔系列:鸭子-策略模式(Strategy
- 设计模式随笔系列:鸭子-策略模式(Strategy)
- 设计模式系列总结之策略模式
- 设计模式随笔系列:鸭子-策略模式(Strategy)[转]
- 设计模式总结之Strategy Pattern(策略模式)
- 设计模式之Strategy(策略模式系列1)
- 设计模式之使用Enum来实现strategy(策略模式系列2)
- [用设计模式锻炼C#系列]之Strategy
- 设计模式随笔--策略模式Strategy
- Head First 设计模式 C++实现-Strategy(策略模式)
- 设计模式之Strategy(策略)
- 设计模式系列之Strategy