Swift设计模式之状态模式

Swift设计模式之状态模式,第1张

概述转自 Swift设计模式 原文 Design-Patterns-In-Swift // 状态模式// 百度百科:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类// 设计模式分类:行为型模式/// 持有状态的对象class Context { private var state: State = UnauthorizedState() var is

转自

Swift设计模式

原文

Design-Patterns-In-Swift
// 状态模式// 百度百科:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类// 设计模式分类:行为型模式/// 持有状态的对象class Context {    private var state: State = UnauthorizedState()    var isAuthorized: Bool {        get { return state.isAuthorized(self) }    }    var userID: String? {        get { return state.userID(self) }    }    func changeStatetoAuthorized(userID userID: String) {        state = AuthorizedState(userID: userID)    }    func changeStatetoUnauthorized() {        state = UnauthorizedState()    }}/** * 状态接口 */protocol State {    func isAuthorized(context: Context) -> Bool    func userID(context: Context) -> String?}/// 未认证状态class UnauthorizedState: State {    func isAuthorized(context: Context) -> Bool { return false }    func userID(context: Context) -> String? { return nil }}/// 认证状态class AuthorizedState: State {    let userID: String    init(userID: String) { self.userID = userID }    func isAuthorized(context: Context) -> Bool { return true }    func userID(context: Context) -> String? { return userID }}let context = Context()(context.isAuthorized,context.userID)context.changeStatetoAuthorized(userID: "admin")(context.isAuthorized,context.userID) // Now logged in as "admin"context.changeStatetoUnauthorized()(context.isAuthorized,context.userID)
总结

以上是内存溢出为你收集整理的Swift设计模式之状态模式全部内容,希望文章能够帮你解决Swift设计模式之状态模式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1076310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存