转自
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设计模式之状态模式所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)