美文网首页
行为型之二-命令模式

行为型之二-命令模式

作者: iOS_肖晨 | 来源:发表于2017-10-10 10:59 被阅读17次

    Command(命令模式)

    将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。

    VC.m

    //waiter用于接收各种类型的order。waiter是请求接收者。
    //接收不同customer产生的不同order,并且都存入waiter这个接受者中,type表示不同类型的order。
    HCDWaiter *waiter = [[HCDWaiter alloc]init];
    //顾客一
    HCDCustomr *customer = [[HCDCustomr alloc]init];
    HCDOrder *customerOrder1 = [customer pushOrderWithString:@"顾客一要十串羊肉" type:orderTypeMutton];
     HCDOrder *customerOrder2 = [customer pushOrderWithString:@"顾客一要十串鸭肉" type:orderTypeDuck];
    [waiter addOrder:customerOrder1];
    [waiter addOrder:customerOrder2];
    //顾客二
    HCDCustomr *customer1 = [[HCDCustomr alloc]init];
    HCDOrder *customer1Order1 = [customer1 pushOrderWithString:@"顾客二要二十串鸡肉" type:orderTypeChicken];
    HCDOrder *customer1Order2 = [customer1 pushOrderWithString:@"顾客二要二十串鸭肉" type:orderTypeDuck];
    [waiter addOrder:customer1Order1];
    [waiter addOrder:customer1Order2];
    //顾客取消Order
    [waiter deleteOrder:customer1Order2];
    //waiter发送order,背后有一个HCDWorker这个单列作为行为实现者来处理具体的order。命令接收完毕,开始发送命令。
    [waiter notifyOrder];
    

    HCDWaiter.h

    @interface HCDWaiter : NSObject
    -(void)addOrder:(HCDOrder *)order;
    -(void)deleteOrder:(HCDOrder *)order;
    -(void)notifyOrder;
    @end
    

    HCDWaiter.m

    @interface HCDWaiter ()
    //用于存储命令列表
    @property(nonatomic,strong)NSMutableArray *orderList;
    @end
    @implementation HCDWaiter
    -(instancetype)init{
        self = [super init];
        if (self) {
            _orderList = [NSMutableArray array];
        }
        return self;
    }
    -(void)addOrder:(HCDOrder *)order{
        NSLog(@"添加Order");
        [self.orderList addObject:order];
    }
    -(void)deleteOrder:(HCDOrder *)order{
        NSLog(@"取消Order");
        [self.orderList removeObject:order];
    }
    /*
     命令接收完毕,开始执行命令
     */
    -(void)notifyOrder{
        NSLog(@"====开始执行Order===");
        for (HCDOrder *order in self.orderList) {
            [order executeOrder];
        }
    }
    @end
    

    设计图

    相关文章

      网友评论

          本文标题:行为型之二-命令模式

          本文链接:https://www.haomeiwen.com/subject/rnhvyxtx.html