场景

我们需要画一个图形,可选的策略就是用红色笔来画,还是绿色笔来画,亦或者蓝色笔来画

实现

项目结构:
image.png
首先,先定义一个策略接口:

  1. public interface Strategy {
  2. public int draw(int radius, int x, int y);
  3. }

然后我们定义具体的几个策略:

  1. public class RedPen implements Strategy {
  2. @Override
  3. public int draw(int radius, int x, int y) {
  4. System.out.println("用红色色笔画图,radius:" + radius + ", x:" + x + ", y:" + y);
  5. return radius;
  6. }
  7. }
  8. public class GreenPen implements Strategy {
  9. @Override
  10. public int draw(int radius, int x, int y) {
  11. System.out.println("用绿色笔画图,radius:" + radius + ", x:" + x + ", y:" + y);
  12. return radius;
  13. }
  14. }
  15. public class BluePen implements Strategy {
  16. @Override
  17. public int draw(int radius, int x, int y) {
  18. System.out.println("用蓝色笔画图,radius:" + radius + ", x:" + x + ", y:" + y);
  19. return radius;
  20. }
  21. }

使用策略的类:

  1. public class Context {
  2. private Strategy strategy;
  3. public Context(Strategy strategy){
  4. this.strategy = strategy;
  5. }
  6. public int executeDraw(int radius, int x, int y){
  7. return strategy.draw(radius, x, y);
  8. }
  9. public static void main(String[] args) {
  10. // 使用蓝色笔来画
  11. Context context = new Context(new BluePen());
  12. // 输出:用蓝色笔画图,radius:10, x:0, y:0
  13. context.executeDraw(10, 0, 0);
  14. }
  15. }