建造者模式(生成器模式)的四个角色: 1)Product 产品角色:一个具体的产品对象 2)Builder 抽象建造者:一个指定生成产品所需要的各个步骤(方法)的 接口或抽象类 3)ConcreteBuilder 具体构建者:实现接口或继承抽象类,具体构建的执行者 4)Director 指挥者: 即Builder的调用者,负责调度产品的生产过程 好处: 1.对产品的具体细节进行封装,上层调用者只需要设置参数就 可以得到想要的产品, 2.实现创建过程和产品本身的解耦,使得相同的创建过程,因为参数 不同,就可以得到不同的对象 3.可以更加精细地控制产品的创建过程 4.增加新的具体建造者无须修改原有类库的代码,指挥者类针对 抽象建造者类编程,系统扩展方便,符合 “开闭原则” 存在的问题: 5) 建造者模式所创建的产品一般具有较多的共同点,其组成部分相似,如果产品之间 的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制。 6) 如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化, 导致系统变得很庞大,因此在这种情况下,要考虑是否选择建造者模式. 同样是创建型模式,抽象工厂模式并不关心产品本身的构建过程,只关心什么产品 由什么工厂生产,即抽象工厂模式创建的产品是批量,事先定制完毕的,属于是 需要就直接调用获取一个产品对象。(产品不具有多样性,无法实时定制化处理) 建造者模式则关注通过一系列组装过程得到想要的定制对象,适用于产品具有明确 的定制化需求的情况