建造者(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
讯享网

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