1.前言
- 设计模式共有23种(点击这里查看更多分类),根据目的准则分类,分为三类
- 创建型设计模式,共5种:单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。
- 结构型设计模式,共7中:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、响元模式。
- 行为设计模式,共11种:策略模式、模版方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
- 这里介绍一下策略模式。
2.特点
- 定义:封装一套算法,使其支持更广泛。
2.1.代码说明
接口类,如下:
interface Calculation {
int doCalculation(int i1, int i2);
}
具体计算类,如下:
public class AddCalculation implements Calculation {
@Override
public int doCalculation(int i1, int i2) {
return i1 + i2;
}
}
public class SubtractCalculation implements Calculation {
@Override
public int doCalculation(int i1, int i2) {
return i1 - i2;
}
}
public class MultiplyCalculation implements Calculation {
@Override
public int doCalculation(int i1, int i2) {
return i1 * i2;
}
}
public class DivideCalculation implements Calculation {
@Override
public int doCalculation(int i1, int i2) {
return i1 / i2;
}
}
具体外层调用计算类,如下:
public class ValueCalculation {
public Calculation mCalculation;
public ValueCalculation(Calculation calculation) {
mCalculation = calculation;
}
public int calculation(int i1, int i2) {
return mCalculation.doCalculation(i1, i2);
}
}
最终调用,如下:
int add = new ValueCalculation(new AddCalculation()).calculation(8, 8);
int subtract = new ValueCalculation(new SubtractCalculation()).calculation(8, 6);
int multiply = new ValueCalculation(new MultiplyCalculation()).calculation(8, 8);
int divide = new ValueCalculation(new DivideCalculation()).calculation(8, 4);
System.out.println("add:" + add + "\n" + "subtract:" + subtract + "\n"
+ "multiply:" + multiply + "\n" + "divide:" + divide);
//--------打印结果--------
System.out: add:16
System.out: subtract:2
System.out: multiply:64
System.out: divide:2
2.2.优缺点
- 优点:拓展性好;调用具体想要的算法方便。
- 缺点:具体计算类较多。
2.3.使用场景
- 动态的选择计算方式
3.总结
有疑问可以留言!