dart_in_action/27_design_pattern_command.dart

87 lines
2.1 KiB
Dart
Raw Normal View History

2019-03-27 10:55:27 +08:00
/**
Command Pattern
使
使"记录、撤销/重做、事务""行为请求者""行为实现者"
*/
main(List<String> args) {
Stock abcStock = new Stock();
BuyStock buyStockOrder = new BuyStock(abcStock);
SellStock sellStockOrder = new SellStock(abcStock);
Broker broker = new Broker();
broker.takeOrder(buyStockOrder);
broker.takeOrder(sellStockOrder);
broker.placeOrders();
}
//////////////////////////////////////////////////////////////////
///
/// 创建一个命令接口
///
abstract class Order {
void execute();
}
///
/// 创建一个请求类
///
class Stock {
String name = "ABC";
int quantity = 10;
void buy() {
print("Stock [ Name: $name, Quantity: $quantity ] bought");
}
void sell() {
print("Stock [ Name: $name, Quantity: $quantity ] sold");
}
}
///
/// 创建实现了 Order 接口的实体类
///
class BuyStock implements Order {
Stock abcStock;
BuyStock(this.abcStock);
void execute() {
abcStock.buy();
}
}
class SellStock implements Order {
Stock abcStock;
SellStock(this.abcStock);
void execute() {
abcStock.sell();
}
}
///
/// 创建命令调用类
///
class Broker {
List<Order> orderList = new List<Order>();
void takeOrder(Order order) {
orderList.add(order);
}
void placeOrders() {
for (Order order in orderList) {
order.execute();
}
orderList.clear();
}
}