达叔的朋友圈们

大话设计模式读书笔记-2策略模式

2020-03-03  本文已影响0人  QuietHeart

第2章 商场促销——策略模式

概念

策略模式定义算法家族,分别封装后,让它们可相互替换,此模式可以让使用算法的用户不会因算法的变化而受到影响。

实现

这里,Strategy相当于前面简单工厂模式中的Operate类,但是Context类不是简单工厂类,而是另外一个客户端调用的类,客户端不直接调用算法的接口,而是通过Context定义的直观的方式来调用算法。

实现图示:

使用方式:

作用

参照简单工厂模式进行总结一下。

与简单工厂模式的区别是,它封装了对象类的概念,客户端不用知道算法的父亲类以及算法的具体方法了,通过一个直观易理解的Context和对应的Context方法名就行。

另外,策略模式还是需要创建子算法对象的分支放到客户端调用过程中的,那样可以与工厂模式结合,将Factory类也放到Context类中,这样客户端也像工厂模式一样,不用选择类对象,子类对象的创建在Context的分支内部中就已经实现了。即,这时的Context同时完成了工厂模式的对象创建,以及封装了对象类的概念。

采用了策略模式+简单工厂模式后,代码类似,但含义层次已然不同:
(1)工厂模式中,还需要知道具体算法的大致接口、以及算法父类。
(2)而结合了策略模式,只需要知道一个直观的Context类,以及易理解的接口(如GetResult),无需知道是什么类、什么方法。

上一篇 下一篇

猜你喜欢

热点阅读