• java设计模式之---策略模式


        做好准备的人,一定会分到一颗糖

    1、策略模式有三种角色:

      上下文角色:OperationStrategy;

      抽象策略角色:Operation;

      具体策略角色:OperationAdd、OperationSub;

    2、具体代码实现:

      Operation类:

    public interface Operation {

    double getResult (double numA, double numB);

    }

      OperationAdd、OperationSub类:

    public class OperationAdd implements Operation {

    @Override
    public double getResult(double numA, double numB) {
    return numA + numB;
    }
    }
    public class OperationSub implements Operation {

    @Override
    public double getResult(double numA, double numB) {
    return numA - numB;
    }
    }

      OperationStrategy类:

    public class OperationStrategy {

    private Operation operation;

    public OperationStrategy (Operation operation) {
    this.operation = operation;
    }

    public double excuteOperation (double numA, double numB) {

    return operation.getResult(numA, numB);

    }
    }

      测试入口类:

    public class OperateTest {

    public static void main(String[] args) {
    OperationStrategy operation = new OperationStrategy(new OperationAdd());
    System.out.println(operation.excuteOperation(2, 3));

    OperationStrategy operation1 = new OperationStrategy(new OperationSub());
    System.out.println(operation1.excuteOperation(3, 2));

    }

    }

      测试结果:

      5.0
      1.0

    3、与工厂模式的不同:

      可以看出来,代码与简单工厂模式有很多相似的地方,两者之间最大的不同就是工厂类和上下文类;

      在使用的过程中,工厂模式是传入一个条件,然后返回相对应的对象,然后再根据对象去处理逻辑;策略模式,返回同一个对象,但是传参的时候,已经把相对应的对象传进去了;

      可以看出两者的关注点不一样,工厂就是创建对象的,其他的我不管;策略就是知道创建的哪一个对象,然后再逻辑处理。

      可能目前我的理解还不够深,也许以后设计模式的界限根本没有那么大,当自己能力足够的时候,可能自然而然设计出来的代码结构比模式还要好,或者是好几个设计模式一起使用,现在我只能继续学习,以后做的多了可能会更好的理解。

  • 相关阅读:
    Loadrunner初学
    loadrunner安装
    性能测试基础知识
    编程语言的基本套路
    Axure RP初学
    网络分层
    网络软件的组成
    C#MVC的基础知识
    xml的基本认识
    添加ASPCMS模板的步骤
  • 原文地址:https://www.cnblogs.com/tengri-fighting/p/12665286.html
Copyright © 2020-2023  润新知