[iOS Swift] Factory——工厂模式的使用与理解

工厂模式属于创建型模式,用于封装复杂对象的创建过程,使其能够在运行时动态创建对象。

示例代码:

protocol Currency {
    func symbol() -> String
    func code() -> String
}

class Euro : Currency {
    func symbol() -> String {
        return "€"
    }

    func code() -> String {
        return "EUR"
    }
}

class UnitedStatesDolar : Currency {
    func symbol() -> String {
        return "$"
    }

    func code() -> String {
        return "USD"
    }
}

enum Country {
    case UnitedStates, Spain, UK, Greece
}

enum CurrencyFactory {
    static func currencyForCountry(country:Country) -> Currency? {

        switch country {
            case .Spain, .Greece :
                return Euro()
            case .UnitedStates :
                return UnitedStatesDolar()
            default:
                return nil
        }
    }
}

使用方法:

let noCurrencyCode = "No Currency Code Available"

CurrencyFactory.currencyForCountry(country: .Greece)?.code() ?? noCurrencyCode
CurrencyFactory.currencyForCountry(country: .Spain)?.code() ?? noCurrencyCode
CurrencyFactory.currencyForCountry(country: .UnitedStates)?.code() ?? noCurrencyCode
CurrencyFactory.currencyForCountry(country: .UK)?.code() ?? noCurrencyCode

理解

从使用角度更容易理解,多种类型的实例都可以通过统一的接口动态创建,只需要动态传入相应的参数即可。

工厂模式比较适合相对复杂对象的创建,简单类也如此封装反而增加了代码的复杂度。

Swift可以通过枚举来创建工厂类。

(用工厂类来实现ViewController的分配是否合理?可以试试看。)

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 风不萧兮水不寒, 不知不觉十一年。 身不在甘心在岸, 属予作文以纪念。 二零零五已酉年, 八月十日初抵甘。 下车伊...
    红图伟业阅读 3,561评论 0 1
  • 就算不被看好,但只要你我看好;就算前方多阻,也要报之以歌;只要温柔相待,方不负似水流年。
    花芽儿阅读 1,553评论 0 0
  • 今天受到一个人的委托 以爱情里,争论对错真的重要吗? 为题来和大家探讨。 在今天这个自由恋爱的年代恋爱已经非常非...
    画里画不出来的画阅读 5,859评论 0 0
  • 中秋临时,万家灯火通明, 人潮拥挤,冲向家的方向, 秋风萧瑟,唯独你无方向, 凉风瑟瑟,行于人海之中, 顿觉孤独,...
    若幽兰阅读 1,760评论 0 1

友情链接更多精彩内容