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、与工厂模式的不同:

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

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

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

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

 

posted @ 2020-04-09 10:48  水能载舟亦能喝  阅读(142)  评论(0编辑  收藏  举报