策略模式

策略模式:它定义了一系列的算法,并对其进行了封装,算法之间可以相互替换,这种替换对客户端是透明的。

作用: 解耦了客户端和具体算法,用StrategyContext封装了算法的构造,选择,执行,变换,使得客户端与算法完全解耦

 

StrategyContext类很像简单工厂里面的工厂类,根据条件判断应该返回什么实例,但是区别在于工厂类的职责只在构造对象并返回,

但StrategyContext不同,他可以封装其他逻辑,如它不仅仅返回算法对象,他应该调用算法对象直接返回客户端所需的结果,所以,

使用简单工厂模式,客户端必须使用一个所有算法的父类来引用工厂类返回的对象,这就造成了客户端不仅和工厂类耦合,还和算法的

父类耦合,而策略模式中,客户端给出数据,StrategyContext返回结果,与客户端耦合的类就只有StrategyContext了;

另外简单工厂模式只返回算法对象,客户端还必须自己调用算法对象的相应方法实现计算,而在策略模式中,计算全部转移到

StrategyContext类中,就减轻了客户端的职责

 

比较常见的是array.sort(comparator),其中array相当于Context,而传进来的comparator就是具体的排序算法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值