今天开始学习下设计模式,参考教材是电子书《Java设计模式》。 策略模式: 引用下维基百科上的图, 通过Context,对Strategy接口不同的实现操作。 代码: IStrategy.java:
package com.pocketdigi.patterns.strategy;
/**
* 策略模式 接口
* 每种策略实现该接口
*/
public interface IStrategy {
public void operate();
}
StrategyA.java
package com.pocketdigi.patterns.strategy;
/**
* 一个实现
*/
public class StrategyA implements IStrategy {
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("策略A实现");
}
}
StrategyB.java
package com.pocketdigi.patterns.strategy;
/**
* 另一个实现
*/
public class StrategyB implements IStrategy {
@Override
public void operate() {
// TODO Auto-generated method stub
System.out.println("策略B实现");
}
}
StrategyContext.java
package com.pocketdigi.patterns.strategy;
/**
* 用于存放,操作策略
*/
public class StrategyContext {
private IStrategy strategy;
public StrategyContext(IStrategy strategy)
{
this.strategy=strategy;
}
public void operate()
{
strategy.operate();
}
}
Main.java:
package com.pocketdigi.patterns;
import com.pocketdigi.patterns.strategy.StrategyA;
import com.pocketdigi.patterns.strategy.StrategyB;
import com.pocketdigi.patterns.strategy.StrategyContext;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StrategyContext context=new StrategyContext(new StrategyA());
context.operate();
context=new StrategyContext(new StrategyB());
context.operate();
}
}
优点:体现高内聚低耦合的特性,方便扩展,以后有更多的其实只需要添加相应类