策略模式结构
classDiagram
class Context{
-Statage statage
+ContextIntegace(Statage statage)
}
class Stratage{
<<abstract>>
+ algorithmInterface()
}
class ConcreateStratage1{
}
class ConcreateStratage2{
}
Context o-- Stratage
ConcreateStratage1 --|>Stratage
ConcreateStratage2 --|>Stratage
以实现加、减、乘、除的计算器功能为例
分析:加、减、乘、除都是一种策略
classDiagram
class StratageContext{
-OperatrionStratage statage
+ContextIntegace(Statage statage)
}
class OperatrionStratage{
<<abstract>>
+ contextInterface()
}
class ConcreateStratageAdd{
}
class ConcreateStratageSub{
}
StratageContext o-- OperatrionStratage
ConcreateStratageAdd --|>OperatrionStratage
ConcreateStratageSub --|>OperatrionStratage
Context 上下文
public class StratageContext {
private OperationStratage stratage;
public OperationStratage getStratage() {
return stratage;
}
public void setStratage(OperationStratage stratage) {
this.stratage = stratage;
}
public StratageContext() {
super();
}
public StratageContext(OperationStratage stratage) {
super();
this.stratage = stratage;
}
public double contextInterface(double numA, double numB) {
return stratage.algMethod(numA, numB);
}
}
策略
public abstract class OperationStratage {
public abstract double algMethod(double numA, double numB);
}
加
public class ConcreateStratageAdd extends OperationStratage {
@Override
public double algMethod(double numA, double numB) {
return numA + numB;
}
}
减
public class ConcreateStratageSub extends OperationStratage {
@Override
public double algMethod(double numA, double numB) {
return numA - numB;
}
}