iOS设计模式 - 命令
原理图
说明
命令对象封装了如何对目标执行指令的信息,因此客户端或调用者不必了解目标的任何细节,却仍可以对他执行任何已有的操作。通过把请求封装成对象,客户端可以把它参数化并置入队列或日志中,也能够支持可撤销操作。命令对象将一个或多个动作绑定到特定的接收器。命令模式消除了作为对象的动作和执行它的接收器之间的绑定。
源码
https://github.com/YouXianMing/CommandPattern
//
//
Invoker.h
//
CommandPattern
//
//
Created by YouXianMing on 15/10/17.
//
Copyright ? 2015年 YouXianMing. All rights reserved.
//
#import <Foundation/Foundation.h>
#import"CommandProtocol.h"@interface Invoker : NSObject
/**
* 单例
*
* @return 单例
*/
+ (instancetype)sharedInstance;
/**
* 添加并执行
*
* @param command 命令
*/
- (void)addAndExecute:(id <CommandProtocol>)command;
@end
//
//
Invoker.m
//
CommandPattern
//
//
Created by YouXianMing on 15/10/17.
//
Copyright ? 2015年 YouXianMing. All rights reserved.
//
#import
"
Invoker.h
"
@interface
Invoker ()
@property (nonatomic, strong) NSMutableArray *commandQueue;
@end@implementation Invoker
+ (instancetype)sharedInstance {
static Invoker *sharedInstanceValue = nil;
static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate, ^{
sharedInstanceValue = [[Invoker alloc] init];
sharedInstanceValue.commandQueue = [NSMutableArray array];
});
return sharedInstanceValue;
}
- (void)addAndExecute:(id <CommandProtocol>)command {
// 添加并执行 [self.commandQueue addObject:command];
[command execute];
}
@end
//
//
CommandProtocol.h
//
CommandPattern
//
//
Created by YouXianMing on 15/10/17.
//
Copyright ? 2015年 YouXianMing. All rights reserved.
//
#import <Foundation/Foundation.h>
@protocol CommandProtocol <NSObject>
@required
/**
* 执行指令
*/
- (void)execute;
@end
细节
原文:http://www.cnblogs.com/YouXianMing/p/4888402.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!