Swift设计模式——Command Pattern

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值