您的位置:首页 > 编程语言 > Java开发

java实现策略模式

2015-07-05 09:40 561 查看
适用场景:一个业务有多个实现场景,3个以上的算法。

好处:解耦和,代码层次清晰,符合面向对象的特点

缺点:客户端代码类需要知道所有的策略,才能知道调用哪个

类集成关系:各个策略实现一个接口(IParseStrategy),在一个环境类(ContextClass)里包含策略接口的引用,环境类通过包含构造函数或者set方法把需要的策略赋给

接口引用,再包含一个对客户端暴漏的方法,这个方法里通过策略接口方法实现。

例子代码如下:

LMStrategy低级会员 MM中级会员 HM高级会员

package strategy;

public interface IStrategy {
public long calPrice(long num);
}
public class LMStrategy implements IStrategy {
@Override
public long calPrice(long num) {
// TODO Auto-generated method stub
return num*1;
}
}

public class MMStrategy implements IStrategy {
@Override
public long calPrice(long num) {
// TODO Auto-generated method stub
return num*2;
}
}


public class HMStraty implements IStrategy {
@Override
public long calPrice(long num) {
// TODO Auto-generated method stub
return num*3;
}
}
策略环境类:
public class Price {
private IStrategy strategy;
public Price(IStrategy strategy){
this.strategy =strategy;
}

public long quote(long booksPrice){
return this.strategy.calPrice(booksPrice);
}
}

客户端类
public class Client {

public static void main(String[] args) {
IStrategy mm = new MMStrategy();
Price price = new Price(mm);
System.out.println(price.quote(1000));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息