简单工厂模式和策略模式
简单工厂模式
用最简单加减法来举例:
Calculate 计算方法接口
public interface Calculate {
int calculate(int a, int b);
}
分别创建Add以及Sub子类并实现其逻辑
public class Add implements Calculate {
@Override
public int calculate(int a, int b) {
return a+b;
}
}
public class Sub implements Calculate {
@Override
public int calculate(int a, int b) {
return a-b;
}
}
创建CalculateFactory工厂类
public class CalculateFactory {
public static Calculate getCalculateInstance(String sign) {
switch (sign) {
case "+":
return new Add();
case "-":
return new Sub();
}
return null;
}
}
客户端中调用Calculate的calculate方法即可实现运算
Calculate calculate=CalculateFactory.getCalculateInstance("+");
calculate.calculate(1,2);
策略模式
同样的以加减法来举例,Calculate 计算方法接口及其子类就不重复了。他们两者的区别,个人感觉还是比较模糊的,如果把 Strategy的Context类同样命名为CalculateFactory,两者的区别可能就变得比较明显了
public class CalculateFactory {
private Calculate calculate =null;
public CalculateFactory(String sign){
switch (sign){
case "+":
calculate = new Add();
case "-":
calculate = new Sub();
}
}
public int getResult(int a, int b){
return calculate.calculate(a,b);
}
}
客户端中调用CalculateFactory的getResult方法即可获取结果
new CalculateFactory("+").getResult(1,2);
纵观两者,都是通过抽象封装了变化。简单工厂模式对不同类的创建的封装;而策略模式则是封装了不同的算法,直接返回所需要的结果。
注:以上纯属个人观点,欢迎指正