策略模式

2020-11-25  本文已影响0人  Happyday_5fce

概述

用于算法的自由切换和扩展,它是应用较为广泛的设计模式

对应于解决某一问题的一个算法族,允许用户从该算法族中任选一个算法来解决问题,同时可以方便的更换算法或者增加新的算法。

工厂模式是解耦对象的创建和使用,观察者模式是解耦观察者和被观察者。策略模式跟两者类似,也能起到解耦的作用,不过,它解耦的是策略的定义、创建、使用这三部分。接下来,我就详细讲讲一个完整的策略模式应该包含的这三个部分。

缺点

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

策略模式讲造成系统产生很多具体策略类。

模板模式这个问题就不明显

优点

策略模式提供了对开闭原则的完美支持,用户可以不修改原有系统的基础上选择算法或行为,也可以灵活地增加新的算法或者行为。

策略模式提供了管理相关算法族的办法。策略类的等级结构定义了一个算法或者行为族,恰当使用继承可以把公共代码移到抽象策略类,从而避免重复代码。有点像模板模式。只是比模板模式多了一个context

避免多重条件选择语句。把算法的使用和定义分开,独立变化


结构

支付方式 可以封装成策略类。

退费系统可以用策略模式或者模板模式

商场促销方式,打折、满减

订单中台退款策略

上一篇下一篇

猜你喜欢

热点阅读