首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

stategy设计方式

2012-08-21 
stategy设计模式策略模式(Strategy)1? 场景问题1.1? 报价管理??????? 向客户报价,对于销售部门的人来讲,这

stategy设计模式

策略模式(Strategy)

1? 场景问题

1.1? 报价管理

??????? 向客户报价,对于销售部门的人来讲,这是一个非常重大、非常复杂的问题,对不同的客户要报不同的价格,比如:

  • 对普通客户或者是新客户报的是全价
  • 对老客户报的价格,根据客户年限,给予一定的折扣
  • 对大客户报的价格,根据大客户的累计消费金额,给予一定的折扣
  • 还要考虑客户购买的数量和金额,比如:虽然是新用户,但是一次购买的数量非常大,或者是总金额非常高,也会有一定的折扣
  • 还有,报价人员的职务高低,也决定了他是否有权限对价格进行一定的浮动折扣

    ??????? 甚至在不同的阶段,对客户的报价也不同,一般情况是刚开始比较高,越接近成交阶段,报价越趋于合理。
    ??????? 总之,向客户报价是非常复杂的,因此在一些CRM(客户关系管理)的系统中,会有一个单独的报价管理模块,来处理复杂的报价功能。
    ??????? 为了演示的简洁性,假定现在需要实现一个简化的报价管理,实现如下的功能:
    ?????????? (1)对普通客户或者是新客户报全价
    ?????????? (2)对老客户报的价格,统一折扣5%
    ?????????? (3)对大客户报的价格,统一折扣10%
    ??????? 该怎么实现呢?


    1.2? 不用模式的解决方案

    ??????? 要实现对不同的人员报不同的价格的功能,无外乎就是判断起来麻烦点,也不多难,很快就有朋友能写出如下的实现代码,示例代码如下:

    图1? 策略模式结构示意图


    Strategy:
    ??????? 策略接口,用来约束一系列具体的策略算法。Context使用这个接口来调用具体的策略实现定义的算法。
    ConcreteStrategy:
    ??????? 具体的策略实现,也就是具体的算法实现。
    Context:
    ??????? 上下文,负责和具体的策略类交互,通常上下文会持有一个真正的策略实现,上下文还可以让具体的策略类来获取上下文的数据,甚至让具体的策略类来回调上下文的方法。


    2.3? 策略模式示例代码

    (1)首先来看策略,也就是定义算法的接口,示例代码如下:

    ?图2? 使用策略模式实现示例的结构示意图

    (1)先看策略接口,示例代码如下:

    margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; line-height: normal; text-align

热点排行