这里介绍一下设计模式中的状态模式在iOS中的实现。
状态模式(State Pattern):允许对象内部状态发生改变时,执行的业务也随之改变。这样方便状态之间解耦合,每个状态下有自己独立的逻辑,便于维护;下面是一个状态模式的实现例子:
@objc protocol State {
func doAction(context :ZLContext)
}
extension State{//这里给出协议方法的默认实现,使得方法称为可选实现
func doAction(context :ZLContext) {
print("协议方法默认的实现")
}
}
@objc class ZLContext: NSObject {
@objc var state: State? = nil
}
@objc class StartState: NSObject , State{
func doAction(context :ZLContext) {
print("Player is in start state")
context.state = self
}
@objc(toString)
func toString() -> String {
return "start state"
}
}
@objc class StopState: NSObject , State{
func doAction(context :ZLContext) {
print("Player is in stop state")
context.state = self
}
@objc(toString)
func toString() -> String {
return "stop state"
}
}
具体使用:
// 状态模式
ZLContext *context = [[ZLContext alloc] init];
StartState *start = [[StartState alloc] init];
[start doActionWithContext:context];
StartState *state = (StartState *)context.state;
NSLog(@"%@", [state toString]);
StopState *stop = [[StopState alloc] init];
[stop doActionWithContext:context];
state = (StopState *)context.state;
NSLog(@"%@", [state toString]);











网友评论