工厂模式+策略模式


一、定义:

策略模式是对算法的包装,把使用算法的责任和算法本身分隔开,委派给不同的对象管理。策略模式通常把一系列的算法包装

到一系列的策略类里面,作为一个抽象策略类的子类。

简单来说就是就定义一个策略接口,子类策略去实现该接口去定义不同的策略。然后定义一个环境(Context,也就

是需要用到策略的对象)类,以策略接口作为成员变量,根据环境来使用具体的策略。

二、优点:

1、算法可以自由切换。

2、避免使用多重条件判断。

3、扩展性良好。

三、缺点:

1、策略类会增多。

2、所有策略类都需要对外暴露。

四、 策略模式实战

案例:结算价格计算,根据Vip不同等级进行运算

1、不同VIP优惠价格分析

用户在购买商品的时候,很多时候会根据Vip等级打不同折扣,尤其是在线商城中体现的淋漓尽致。我们这里也基于真实电商案例来实现VIP等级价格制:

Vip0->普通价格

Vip1->减5元

Vip2->7折

Vip3->5折

2、 代码实现

(1)定义策略接口: Strategy

(2)定义Vip0策略: StrategyVipOne

(3)定义Vip1策略: StrategyVipTwo

(4)定义Vip2策略: StrategyVipThree

(5)定义策略工厂: StrategyFactory

(6)等级策略配置:修改application.yml,将如下策略配置进去

strategy:

  strategyMap:

     1: strategyVipOne

     2: strategyVipTwo

     3: strategyVipThree

(7)测试

(8)总结:常用VIP客户打折问题,先定义一个策略接口,用于价格计算,然后定义几个类vip0,vip1,vip2,实现策略接口,控制分别打几折,然后定义一个策略工厂,根据不同的vip等级,获取不同的策略实例。

你可能感兴趣的:(工厂模式+策略模式)