dart_in_action/35_design_pattern_strategy....

65 lines
1.5 KiB
Dart
Raw Permalink Normal View History

2019-03-27 10:55:27 +08:00
/**
Strategy Pattern
,, 使
使 if...else
使
*/
main(List<String> args) {
Context context = new Context(new OperationAdd());
print("10 + 5 = ${context.executeStrategy(10, 5)}");
context = new Context(new OperationSubstract());
print("10 - 5 = ${context.executeStrategy(10, 5)}");
context = new Context(new OperationMultiply());
print("10 * 5 = ${context.executeStrategy(10, 5)}");
}
//////////////////////////////////////////////////////////////////
///
/// 创建一个接口
///
abstract class Strategy {
int doOperation(int num1, int num2);
}
///
/// 创建实现接口的实体类
///
class OperationAdd implements Strategy {
@override
int doOperation(int num1, int num2) {
return num1 + num2;
}
}
class OperationSubstract implements Strategy {
@override
int doOperation(int num1, int num2) {
return num1 - num2;
}
}
class OperationMultiply implements Strategy {
@override
int doOperation(int num1, int num2) {
return num1 * num2;
}
}
///
/// 创建 Context 类
///
class Context {
Strategy _strategy;
Context(this._strategy);
int executeStrategy(int num1, int num2) {
return _strategy.doOperation(num1, num2);
}
}