Swift 重学设计模式系列之建造者模式

Swift 重学设计模式系列之建造者模式建造者 Builder 模式的定义 指将一个复杂对象的构造与它的表示分离 使同样的构建过程可以创建不同的表示 这样的设计模式被称为建造者模式 它是将一个复杂的对象分解为多个简单的对象 然后一步一步构建而成 它将变与不变相分离 即产品的组成部分是不变的 但每一部分是可以灵活选择的

大家好,我是讯享网,很高兴认识大家。

建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。

该模式的主要优点如下:
    1.    各个具体的建造者相互独立,有利于系统的扩展。
    2.    客户端不必知道产品内部组成的细节,便于控制细节风险。

其缺点如下:
    1.    产品的组成部分必须相同,这限制了其使用范围。
    2.    如果产品的内部变化复杂,该模式会增加很多的建造者类。


讯享网

建造者(Builder)模式和工厂模式的关注点不同:建造者模式注重零部件的组装过程,而工厂方法模式更注重零部件的创建过程,但两者可以结合使用。

/// 主食 enum StapleFood { case hamburger case chicken_rice } /// 饮料 enum Drink { case cola case cafe } /// 小食 enum Snacks { case chips case egg_tart } /// 套餐类型 enum KFCPackageType { case A case B } class Package { var stapleFood: StapleFood? var dirnk: Drink? var snacks: Snacks? func printInfo() { print("主食:\(self.stapleFood!),饮料:\( self.dirnk!),小食:\(self.snacks!)") } } class Builder { func getKFCPackage(type: KFCPackageType) -> Package { switch type { case .A: let package = Package() package.stapleFood = .hamburger package.dirnk = .cola package.snacks = .chips return package case .B: let package = Package() package.stapleFood = .chicken_rice package.dirnk = .cafe package.snacks = .egg_tart return package } } } let builder = Builder() builder.getKFCPackage(type: .A).printInfo() builder.getKFCPackage(type: .B).printInfo() //主食:hamburger,饮料:cola,小食:chips //主食:chicken_rice,饮料:cafe,小食:egg_tart

讯享网

 

小讯
上一篇 2025-01-18 10:58
下一篇 2025-03-04 07:53

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/53966.html