Command 模式是一种数据驱动的设计模式,属于行为模式类。
通常做法:把请求包含在一个对象中以命令的形式传递给请求者,请求者查找能够处理上述命令的对象,执行相关操作。
DEMO说明:
1、Order 对应上文提到的命令;
2、Stock 对应上文提到的请求;
3、buyStock 和 sellStock 实现Order接口,是实际执行command命令的对象类;
4、Broker 对应上文提到的请求者,确定具体执行哪个类型的命令;
<span style="color:#333333;">import UIKit
//Request
class Stock {
var name:String = "ABC"
var quantity:Int = 10
func buy(){
print("Stock [ Name:\(name), Quantity: \(quantity) ] bought")
}
func sell(){
print("Stock [ Name:\(name), Quantity: \(quantity) ] sold")
}
}
//Command
protocol Order {
func execute()
}
class BuyStock : Order {
let buy_Stock:Stock
required init(abcStock: Stock) {
self.buy_Stock = abcStock
}
func execute() {
buy_Stock.buy()
}
}
class SellStock : Order {
let sell_Stock:Stock
required init(abcStock: Stock) {
self.sell_Stock = abcStock
}
func execute(){
sell_Stock.sell()
}
}
//invoker
class Broker {
var List:[Order]
init(list:[Order]){
self.List = list
}
func placeOrders(){
for order in List{
order.execute()
}
}
}
var abcStock = Stock()
var buyCommand = BuyStock(abcStock: abcStock)
var sellCommand = SellStock(abcStock: abcStock)
var broker = Broker.init(list: [buyCommand, sellCommand])
broker.placeOrders()
</span>
原作者链接:http://www.tutorialspoint.com/design_pattern/command_pattern.htm