设计模式总结篇系列:策略模式(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 }
复制代码

 

---------------------------------------------------------------------------------
笔者水平有限,若有错漏,欢迎指正,如果转载以及CV操作,请务必注明出处,谢谢!
分类: 设计模式

本文转自Windstep博客园博客,原文链接:http://www.cnblogs.com/lwbqqyumidi/p/3769085.html,如需转载请自行联系原作者
目录
相关文章
|
15天前
|
设计模式 算法 PHP
php设计模式--策略模式(六)
php设计模式--策略模式(六)
11 0
|
3月前
|
设计模式 算法 搜索推荐
设计模式之策略模式
设计模式之策略模式
41 0
|
3月前
|
设计模式 算法 Java
行为型设计模式-策略模式(Strategy Pattern)
行为型设计模式-策略模式(Strategy Pattern)
|
1月前
|
设计模式 算法
策略模式--设计模式
策略模式--设计模式
17 0
|
1月前
|
设计模式 算法 Java
【设计模式】策略模式
【设计模式】策略模式
|
3月前
|
设计模式 算法 自动驾驶
常见的设计模式(模板与方法,观察者模式,策略模式)
随着时间的推移,软件代码越来越庞大,随着而来的就是如何维护日趋庞大的软件系统。在面向对象开发出现之前,使用的是面向过程开发来设计大型的软件程序,面向过程开发将软件分成一个个单独的模块,模块之间使用函数进行组合,最后完成系统的开发,每次需要修改软件,如果不涉及好各个模块的关系,就会导致软件系统难以维护,从而导致软件变得不可使用。面向对象方法用对象模拟问题域中的实体,以对象间的联系刻画实体间联系
63 2
|
3月前
|
设计模式 算法
设计模式 | 策略模式
设计模式 | 策略模式
18 0
|
3月前
|
设计模式 算法 Go
Golang设计模式——15策略模式
Golang设计模式——15策略模式
28 0
|
3月前
|
设计模式 算法
设计模式之策略模式
设计模式之策略模式
|
3月前
|
设计模式 前端开发 算法
【设计模式】之策略模式
在前端开发中,我们经常会遇到需要根据不同的条件或情况来执行不同的算法或行为的情况。这时,策略模式就能派上用场。策略模式是一种行为型设计模式,它将不同的算法封装成独立的策略对象,使得这些算法可以互相替换,而不影响客户端代码。这种灵活性和可扩展性使得策略模式在前端开发中得到广泛应用。
48 0