设计模式-状态

2020-10-21  本文已影响0人  Sweet丶

这里介绍一下设计模式中的状态模式在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]);
上一篇 下一篇

猜你喜欢

热点阅读