建造者模式
应用场景
如果需要生成的产品对象有复杂的内部结构,一般会使用建造者模式创建对象。比如当创建房子对象的时候,一般就会使用建造者模式。
下面这个就是用建造者模式创建对象的例子,如下:
产品对象
下定义想要创建的产品的对象,如下图:
抽象建造类
然后再定义一个抽象建造者类,如下图:
具体工人类
然后定义一个具体工人类继承抽象建造者类,如下图:
领导者类
接着写一个领导者类,如下图:
测试
最后进行测试,如下图:
建造者模式的优缺点
优点:
产品的建造和表示分离,实现了解耦。使用建造者模式可以使客户端不必知道产品内部组件的细节。
将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰
具体的建造者类之间是相互独立的,这有利于系统的扩展。增加新的具体建造者无需修改原有类库的代码,
符合开闭原则
缺点:
建造者模式所创建的产品一般具有较多的共同点,其组成部分相似;如果产品之间的差异性很大,
则不适合使用建造者模式,因此其使用范围受到一定的限制。
如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大