设计模式之策略模式(一对象行为型)

1.什么是策略模式。

  策略模式是将可变部分从程序中抽象分离成算法接口,在该接口下分别封装一系列算法实现。使得客户端程序独立于算法的改变,而不会出现变动。体现了高内聚和低耦合的特性。

  缺点:客户端必须知道和理解所有的策咯,违反最少知识原则的,可以利用享元模式减少对象的数量。

  特点:把不变的部分抽象为接口,将变化的部分归结为实现。

2.策略模式应用场景举例。

  文档——布局算法——(布局算法1,布局算法2,布局算法3,……)

  支付——支付算法——(招商银行,建设银行,工商银行,……)

  旅游——交通工具——(汽车,火车,飞机,轮船,……)

  ……

3.策略模式的使用举例。

  三国有一章,周郎妙计安天下,赔了夫人又折兵。这里讲述了,赵云怀揣着诸葛亮的三条锦囊妙计,来到吴国,最后,在诸葛亮安排下,黄忠与魏延救援下,刘备最终娶回吴国公主的故事。这里可以使用到策略模式,抽象为如下类图:

 

解释如下:定义一个妙计的接口类,可以用来实现各种各样的计策。定义一个存放计策的抽象锦囊类SmartExpress,用于陈放各种计策。有一个秘密的类继承自锦囊类,为赵云使用的,有一个明显计谋类,继承自锦囊类,为黄忠与魏延等使用。

核心代码:

IIdearStrategy接口:
/**
* @FileName IIdearStrategy.java
* @Package com.ali.pattern.strategy.idears
* @Description
* <p>策略模式:各种策略的抽象接口</p>
* @Author ali blog:http://www.cnblogs.com/accipiter
* @Date 2016年1月18日下午8:29:56
* @Version V1.0.1
*/
package com.ali.pattern.strategy.idears;

/**
* @ClassName IIdearStrategy
* @Description TODO
* @Date 下午8:32:05
*/
public interface IIdearStrategy{
    public void oprate();
}

 

SmartExpress 类:
/**
* @FileName SmartExpress.java
* @Package com.ali.pattern.strategy.idears
* @Description 
*<p>周郎妙计安天下,赔了夫人又折兵</p>
* @Author ali blog:http://www.cnblogs.com/accipiter
* @Date 2016年1月18日下午8:49:01
* @Version V1.0.1
*/
package com.ali.pattern.strategy.idears;

/**
 * @ClassName SmartExpress
 * @Description 
 * <p>锦囊类用以装妙计</p>
 * @Date 下午8:49:01
 */
public abstract class SmartExpress {

    private IIdearStrategy idearStrategy;
    /**
    * @Title SmartExpress
    * @Description 
    * <p>构造函数用以决定使用那个妙计</p>
    * @param idearStrategy
     */
    public void  setSmartExpress(IIdearStrategy idearStrategy){
        this.idearStrategy=idearStrategy;
    }
    /**
    * @Title operate
    * @Description
    * <p>使用计谋</p> 
    * @Return void
    * @Throws 
    * @user Administrator
    * @Date 2016年1月18日
     */
    public void operate(){
        this.idearStrategy.oprate();
    }
}

=============================华丽分割线=======================================

如果有需要全套代码的可以与我联系。

 

 

转载于:https://www.cnblogs.com/accipiter/p/5140760.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值