这是构建者模式的类图, 我们把产品类组合到我们的抽象构建者中,由我们具体的构建者进行实现其细节方法操作,并将我们的抽象构建者聚合到我们的指挥者中,利用指挥者的construct方法进行把构建者中的细节方法进行组合
这里我也看过其他人的构建者博客,其中最好理解的就是KFC案例,把我们需要的套餐(饮料品种加汉堡品种)作为我们的product,我们的构建者就是方案A,B,我们的Director就是点单系统,构建者模式就是把一些制作过程相似的东西抽象出来
这里我做了一个案例
这是我们的产品类
这是我们的抽象构建者
这是我们的指挥者
这是我们两个具体的构造者,我们这里实际还可以做矮白的房子,高黄的房子,我们只需要再去写一个构造者即可
构造者模式的好处:把我们的产品和构建者解耦了,我们相同的创建过程可以得到不同的对象,而且每个具体的构造者(按我的理解也可以理解为一种方案)都是相互独立的,这样对我们的扩展很方便,而且可以把我们的步骤更加精细的分解成各个方法,创建过程更加的清晰
不好的地方就是如果内部过于复杂,不同的组合过于多,我们系统会变得很庞大就要斟酌是否用建造者模式了
这里插一句题外话:就是对于我们的抽象工厂模式和建造者模式他们可能会很容易搞混,因为类的结构确实有点相同,但是他们的侧重点不一样,工厂我觉得更加在意的是产品是由哪个工厂创建的,而构建者模式,是通过指定的组合各种步骤生成我们的产品且对我们隐藏了其建造的细节.