设计模式课程 设计模式精讲 19-1 策略模式讲解


1    课程讲解

1.1  类型:

1.2  定义:

1.3  适用场景:

1.4  优点:

1.5  缺点:

1.6  其他特性:

1.7  与其他设计模式关系:


1    课程讲解
1.1  类型:

行为型

1.2  定义:

定义:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户。
if...else..…

扩展:

使用算法的用户就是应用层,我们把不同的算法封装到不同的类中,让她们之间可以相互替换。

如田忌赛马,满减等

大量的if else可以消除掉,

1.3  适用场景:

系统有很多类,而他们的区别仅仅在于他们的行为不同

一个系统需要动态地在几种算法中选择一种

扩展:把对象的不同行为放到不同的类中,她有很多行为类,每一种类对应每一种行为。

如:两个数 加法策略,减法策略,乘法策略,除法策略等等

1.4  优点:

开闭原则
避免使用多重条件转移语句(if else switch)
提高算法的保密性和安全性

1.5  缺点:

客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
产生很多策略类

1.6  其他特性

多态和策略模式的区别

多态是面向对象的特性,这是两个不同层面的概念。在java里面,你看到的策略模式的就是利用了面向对象的多态特性实现的而已

 

1.7  与其他设计模式关系:

◆策略模式和工厂模式

后者是创建型的,前者是行为型的。

后者接收指令,创建出符合要求的对象,前者接收已经创建好的对象,从而实现不同的行为。


◆策略模式和状态模式

前者客户端需要知道我们使用的哪个策略,后者客户端不需要知道具体的状态,且状态会自动转换。

原文地址:https://www.cnblogs.com/1446358788-qq/p/11602525.html