策略模式

简介: 场景:当不同条件调用不同的算法或者策略时。优点:1.可以减少大量的if else,减少耦合度。 2.方便扩展和维护缺点:1.类的数量变多,机构变复杂了。 2.向外暴露了策略


场景:当不同条件调用不同的算法或者策略时。

优点:1.可以减少大量的if else,减少耦合度。

          2.方便扩展和维护

缺点:1.类的数量变多,机构变复杂了。

          2.向外暴露了策略

类图:

image.png

代码:

策略接口

1. public interface Strategy {
2. public void method();
3. }

策略实现

1. public class StrategyA implements Strategy {
2. @Override
3. public void methodA() {
4. System.out.println("方法A");
5.     }
6. }
1. public class StrategyB implements Strategy {
2. @Override
3. public void methodB() {
4. System.out.println("方法B");
5.     }
6. }
1. public class StrategyC implements Strategy {
2. @Override
3. public void methodC() {
4. System.out.println("方法C");
5.     }
6. }

上下文角色

1. public class Context {
2. //抽象策略
3. private Strategy strategy = null;
4. //构造函数设置具体策略
5. public Context(Strategy strategy) {
6. this.strategy = strategy;
7. }
8. public void setContext(Strategy strategy) {
9. this.strategy = strategy;
10. }
11. //封装后的策略方法
12. public void doMethod() {
13. this.strategy.method();
14. }
15. }

调用(如果为了美化 可以将这个类设计为工厂 这样可以保持对入口的统一管理)

1. public class Client {
2. public static void main(String[] args) {
3. //声明上下文对象
4. Context context = new Context();
5. context.setContext(new StrategyA());
6. //执行封装后的方法
7. context.method();
8. context.setContext(new StrategyB());
9. //执行封装后的方法
10. context.method();
11. }
12. }

 


相关文章
|
设计模式 算法 Java
什么场景要使用策略模式,什么场景不能使用?
如果,让我来设计,我最先想到的就是策略模式。另外,我把往期面试题解析的配套文档我已经准备好,想获得的可以在我的煮叶简介中找到。那么什么场景要使用策略模式,什么场景又不应该使用策略模式呢?我们可以先来看官方对策略模式的定义。
187 0
|
设计模式 前端开发
关于策略模式我所知道的
关于策略模式我所知道的
93 0
|
算法 C++ 安全
3.9策略模式
1.什么是策略模式?         本质:面向借口编程。或者说策略模式是面向接口编程的最佳体现。         他抽象的是不同的算法,或者说策略。         比如税收,有个税和企业税。
714 0
|
前端开发
策略模式
策略模式
88 0
|
算法 程序员 开发工具
简单说说我对策略模式的了解
简单说说我对策略模式的了解
101 0
|
设计模式 算法 开发工具
Android设计模式之策略模式详解
Android设计模式之策略模式详解
71 0
|
5月前
|
设计模式 算法 搜索推荐
策略模式的小记
本文介绍了策略模式的概念、结构和使用场景,并通过支付系统的例子展示了如何使用策略模式来动态选择不同的支付策略,包括定义支付策略接口、实现具体的支付策略类、创建上下文类以及在客户端动态选择支付策略。
策略模式的小记

热门文章

最新文章