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 与其他设计模式关系:
◆策略模式和工厂模式
后者是创建型的,前者是行为型的。
后者接收指令,创建出符合要求的对象,前者接收已经创建好的对象,从而实现不同的行为。
◆策略模式和状态模式
前者客户端需要知道我们使用的哪个策略,后者客户端不需要知道具体的状态,且状态会自动转换。