1.1 简介
1.1.1 概述
建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。
1.1.2 优缺点
优点: ① 封装性好,构建和表示分离。 ② 扩展性好,各个具体的建造者相互独立,有利于系统的解耦。 ③ 客户端不必知道产品内部组成的细节,建造者可以对创建过程逐步细化,而不对其它模块产生任何影响,便于控制细节风险。
缺点: ① 产品的组成部分必须相同,这限制了其使用范围。 ② 如果产品的内部变化复杂,如果产品内部发生变化,则建造者也要同步修改,后期维护成本较大。
1.2 案例
生成器模式建议将对象构造代码从产品类中抽取出来,并将其放在一个名为生成器的独立对象中。生成器模式让你能够分步骤创建复杂对象。生成器不允许其他对象访问正在创建中的产品。该模式会将对象构造过程划分为一组步骤, 比如 buildStepA 和 buildStepB 等。 每次创建对象时,都需要通过生成器对象执行一系列步骤。重点在于无需调用所有步骤,只需调用创建特定对象配置所需的步骤即可。 创建不同形式的产品时,其中的一些构造步骤可能需要不同的实现。在这种情况下,可以创建多个不同的生成器,用不同方式实现一组相同的创建步骤。然后就可以在创建过程中使用这些生成器(例如按顺序调用多个构造步骤)来生成不同类型的对象。可以进一步将用于创建产品的一系列生成器步骤调用抽取成为单独的主管类。主管类可定义创建步骤的执行顺序,而生成器则提供这些步骤的实现。 严格来说,程序中并不一定需要主管类。客户端代码可直接以特定顺序调用创建步骤。不过,主管类中非常适合放入各种例行构造流程,以便在程序中反复使用。此外,对于客户端代码来说,主管类完全隐藏了产品构造细节。客户端只需要将一个生成器与主管类关联,然后使用主管类来构造产品,就能从生成器处获得构造结果了。