场景
我们需要画一个图形,可选的策略就是用红色笔来画,还是绿色笔来画,亦或者蓝色笔来画
实现
项目结构:
首先,先定义一个策略接口:
public interface Strategy {public int draw(int radius, int x, int y);}
然后我们定义具体的几个策略:
public class RedPen implements Strategy {@Overridepublic int draw(int radius, int x, int y) {System.out.println("用红色色笔画图,radius:" + radius + ", x:" + x + ", y:" + y);return radius;}}public class GreenPen implements Strategy {@Overridepublic int draw(int radius, int x, int y) {System.out.println("用绿色笔画图,radius:" + radius + ", x:" + x + ", y:" + y);return radius;}}public class BluePen implements Strategy {@Overridepublic int draw(int radius, int x, int y) {System.out.println("用蓝色笔画图,radius:" + radius + ", x:" + x + ", y:" + y);return radius;}}
使用策略的类:
public class Context {private Strategy strategy;public Context(Strategy strategy){this.strategy = strategy;}public int executeDraw(int radius, int x, int y){return strategy.draw(radius, x, y);}public static void main(String[] args) {// 使用蓝色笔来画Context context = new Context(new BluePen());// 输出:用蓝色笔画图,radius:10, x:0, y:0context.executeDraw(10, 0, 0);}}
