Java 之 23 种设计模式解析—— C、关系模式(11种)13、策略模式(strategy)

 C、关系模式(11种)

先来张图,看看这11中模式的关系:

第一类:通过父类与子类的关系进行实现。

第二类:两个类之间。

第三类:类的状态。

第四类:通过中间类

 

父类与子类关系

13、策略模式(strategy)

策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数,关系图如下:

图中ICalculator提供同意的方法,
AbstractCalculator是辅助类,提供辅助方法,接下来,依次实现下每个类:

首先统一接口:

1. public interface ICalculator {
2.	public	int	calculate(String	exp);
3. }

辅助类:

1. public abstract class AbstractCalculator {
2.
3.	public int[] split(String exp,String opt){
4.	String array[] = exp.split(opt);
5.	int arrayInt[] = new int[2];
6.	arrayInt[0] = Integer.parseInt(array[0]);
7.	arrayInt[1] = Integer.parseInt(array[1]);
8.	return arrayInt;
9.	}
10. }

三个实现类:

1. public class Plus extends AbstractCalculator implements ICalculator {
2.
3.	@Override
4.	public int calculate(String exp) {
5.	int arrayInt[] = split(exp,"\\+");
6.	return arrayInt[0]+arrayInt[1];
7.	}
8. }
1. public class Minus extends AbstractCalculator implements ICalculator {
2.
3.	@Override
4.	public int calculate(String exp) {
5.	int arrayInt[] = split(exp,"-");
6.	return arrayInt[0]-arrayInt[1];
7.	}
8.
9. }
1. public class Multiply extends AbstractCalculator implements ICalculator {
2.
3.	@Override
4.	public int calculate(String exp) {
5.	int arrayInt[] = split(exp,"\\*");
6.	return arrayInt[0]*arrayInt[1];
7.	}
8. }

 简单的测试类:

1. public class StrategyTest {
2.
3.	public static void main(String[] args) {
4.	String exp = "2+8";
5.	ICalculator cal = new Plus();
6.	int result = cal.calculate(exp);
7.	System.out.println(result);
8.	}
9. }

输出:10

策略模式的决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可。

目录:(点击进入相应页面)

概述、六大原则

一、创建模式

0、简单工厂模式

1.工厂方法模式(Factory Method)

2、抽象工厂模式

3、单例模式(Singleton)

4、建造者模式(Builder)

5、原型模式(Prototype)

二、结构模式(7种)

6、适配器模式

7、装饰模式(Decorator)

8、代理模式(Proxy)

9、外观模式(Facade)

10、桥接模式(Bridge)

11、组合模式(Composite

12、享元模式(Flyweight)

三、关系模式(11种)

13、策略模式(strategy)

14、模板方法模式(Template Method)

15、观察者模式(Observer)

16、迭代子模式(Iterator)

17、责任链模式(Chain of Responsibility)

18、命令模式(Command)

19、备忘录模式(Memento

20、状态模式(State)

21、访问者模式(Visitor)

22、中介者模式(Mediator)

23、解释器模式(Interpreter)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值