策略模式
一:特点
高内聚,低耦合,扩展性强
二:适用场景
比如 商场打折的商品价格计算,就可以使用策略模式,不同的折扣设计成不同的策略,
外部只需要调用不同的策略,而不用关心策略的具体实现,而且给策略留下了足够的
拓展空间。
三:具体实现
1.定义策略接口:
public interface IStrategy {
public void operate();
}
2.定义策略的容器:
public class StrategyContainer {
private IStrategy mStrategy;
public StrategyContainer(IStrategy strategy)
{
this.mStrategy = strategy;
}
public void operate()
{
this.mStrategy.operate();
}
}
3.实现具体的策略:
//第一种策略实现
public class FirstStrategy implements IStrategy{
@Override
public void operate() {
System.out.println("第一种策略调用");
}
}
//第二种策略实现
public class SecondStrategy implements IStrategy{
@Override
public void operate() {
System.out.println("第二种策略调用");
}
}
//第三种策略实现
public class ThirdStrategy implements IStrategy{
@Override
public void operate() {
System.out.println("第三种策略调用");
}
}
4.策略的使用:
public class Main {
public static void main(String[] args)
{
//使用第一种策略
StrategyContainer mFirstContainer = new StrategyContainer(new FirstStrategy());
mFirstContainer.operate();
//使用第二种策略
StrategyContainer mSecondContainer = new StrategyContainer(new SecondStrategy());
mSecondContainer.operate();
//使用第三种策略
StrategyContainer mThirdContainer = new StrategyContainer(new ThirdStrategy());
mThirdContainer.operate();
}
}