策略模式

        策略模式属于对象的行为模式,其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响客户端的情况下发生变化。
        策略模式中有三种角色:
抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现,此角色给出所有的具体策略类所需的接口。
具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。
环境(Context)角色:持有一个Strategy类的引用。
        以下是代码示例:
package  strategy;

public abstract class Strategy 
{

    
public abstract void
 func();
    
}



package  strategy;

public class ConcreteStrategy extends Strategy 
{

    
public void func() 
{
        System.out.println(
this + ".func()"
);
    }


}



package  strategy;

public class Context 
{

    
private
 Strategy strategy;
    
    
public void strategyFunc() 
{
        strategy.func();
    }

}

 

        上面的示例中没有“使用者”角色,因为策略模式的使用情景可能各不相同,并没有统一的模型。

        我从没有意识到“策略模式”是一种特别的模式,只认为这是面向对象的一种基本设计方法,在我所参考的资料中有一个例子被着重推荐,就是在电子商务中针对不同商品实行不同的打折策略的问题,实现不同的具体折扣策略类来继承基本折扣策略类,每种商品选择一种折扣策略来实施。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值