标签:
又要根据场景写代码了,感觉策略模式的适用场景太多了….而且往往我们在使用中有时候都不会意识到它的存在…那么废话到此为止
比如我们作为一个Editor,要对一段代码上色让它高亮,那么我们就抽象出画笔这个角色,然后开始我们的涂色之旅…
/**
* Created by liulin on 16-5-6.
*/
interface Strategy{
void operate();
}
class RedPaint implements Strategy{
@Override
public void operate() {
System.out.println("paint the code to red!");
}
}
class BluePaint implements Strategy{
@Override
public void operate() {
System.out.println("Paint the code to blue!");
}
}
class Context{
private Strategy strategy;
public Context( Strategy strategy ){
this.strategy = strategy;
}
public void operate ( ){
strategy.operate();
}
}
public class StrategyTest {
public static void main ( String [] args ) {
Context context = new Context(new BluePaint());
context.operate();
context = new Context ( new RedPaint());
context.operate();
}
}
输出结果如下:
在Spring采取动态代理时有JDK和CGLIB两种代理方式,就是采用策略模式实现的
Java 设计模式(九) Strategy(策略)模式及Spring引申
标签:
原文地址:http://blog.csdn.net/qq_24451605/article/details/51331224