首页 > 代码库 > 设计模式总结篇系列:策略模式(Strategy)
设计模式总结篇系列:策略模式(Strategy)
前面的博文中分别介绍了Java设计模式中的创建型模式和结构型模式。从本文开始,将分别介绍设计模式中的第三大类,行为型模式。首先我们了解下分为此三大类的依据。
创建型模式:主要侧重于对象的创建过程;
结构型模式:主要侧重于处理类或对象的组合;
行为型模式:主要侧重于类或对象之间的交互以及职责分配。
首先了解下策略模式的概念:定义了多个算法,并将它们封装起来(一般的是每个算法封装成一个单独的类),让算法独立于客户端而可以单独变化。
具体可以看一下下面的例子(以计算加、减、乘为例):
1. 对加、减、乘每个算各自封装成一个类,首先定义其共同的接口:
1 interface ICalculator{
2
3 public int calculator(int a, int b);
4
5 }
2. 分别定义加、减、乘算法类:
1 class Plus implements ICalculator {
2
3 @Override
4 public int calculator(int a, int b) {
5 return a + b;
6 }
7
8 }
1 class Minus implements ICalculator {
2
3 @Override
4 public int calculator(int a, int b) {
5 return a - b;
6 }
7
8 }
1 class Multiply implements ICalculator {
2
3 @Override
4 public int calculator(int a, int b) {
5 return a * b;
6 }
7
8 }
3. 定义上下文环境类,用于封装各个算法类操作:
1 class Context{
2
3 private ICalculator iCalculator;
4
5 public Context(ICalculator iCalculator){
6 this.iCalculator = iCalculator;
7 }
8
9 public int calculator(int a, int b){
10 return iCalculator.calculator(a, b);
11 }
12
13 }
4. 测试:
1 public class StrategyTest {
2
3 public static void main(String[] args) {
4 Context context = new Context(new Plus());
5 context.calculator(2, 3);
6 }
7
8 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。