作者网页:www.jcohy.com
我的学习笔记,记录学习过程中的笔记以及遇到的问题,以及我的一些经验总结。如果出现链接失效,或者想知道更多的内容等情况可以提交 Issues 提醒我修改相关内容。
它定义了算法家族,分别封装起来,让他们之间可以相互替换。此模式让算法的变化,不会影响到使用算法的客户。
- Context
Context上下文,用一个ConcreteStrategy来配置,维护一个对Strategy对象的引用。
- Strategy
策略类,定义所有支持的算法的公共接口
- ConcreteStrategy(A,B,C,....)
具体策略类,封装了具体的算法和行为。继承Strategy。
1.定义接口
public abstract class Strategy {
public abstract void method();
}
2.Context
public class Context {
Strategy sta;
public Context(Strategy sta) {
this.sta=sta;
}
public void deMethod(){
sta.method();
}
}
3.StrategyImpl
public class StrategyImplA extends Strategy{
@Override
public void method() {
System.out.println("这是A的算法实现");
}
}
public class StrategyImplB extends Strategy{
@Override
public void method() {
System.out.println("这是B的算法实现");
}
}
public class StrategyImplC extends Strategy {
@Override
public void method() {
System.out.println("这是C的算法实现");
}
}
4.Client
public static void main(String[] args) {
Context ctx1 = new Context(new StrategyImplA());
Context ctx2 = new Context(new StrategyImplB());
Context ctx3 = new Context(new StrategyImplC());
ctx1.deMethod();
ctx2.deMethod();
ctx3.deMethod();
}
5.result
这是A的算法实现
这是B的算法实现
这是C的算法实现
- java.util.Comparator#compare()
- javax.servlet.http.HttpServlet
- javax.servlet.Filter#doFilter()