建造者模式
建造者模式(Builder Pattern)又称生成器模式,分步构建一个复杂对象,并允许按步骤构造。
与工厂模式的区别
- 工厂虽然也是创建对象,但怎样创建无所谓,工厂模式关注的是创建的结果;如:工厂模式直接返回一个苹果实例,忽略了要自定义过程。
- 而建造者模式不仅得到了结果,同时也参与了创建的具体过程,适合用来创建一个复杂的复合对象。如:通过建造者一步一步的配置好汽车的配置,参与自定义的过程。
- 同样的构建过程可以采用不同的表示,将一个复杂对象的 构建层(构建者) 与其 表示层(产品类) 分离。
理解
- 建造者类产生一个实例,这个实例的生产过程需要我们一步一步发送配置信息。
- 与工厂模式很相似,唯一区别在于这个的自定义程度更高。
- 遇到 new 时考虑工厂模式,当产品实例复杂,并且需要自定义程度高时,考虑建造者模式。
- 建造者模式提供了一种更加领过的创建对象的方式,比如同一个构造者,我们指挥它来创建一个car对象,有些人觉得不需要空调这个功能,有些人觉得要空调这个功能,最后都能得到一辆车,只不过是有没有空调的差别。
汽车厂家(指挥者)往往只是做汽车组装,它需要 组装工人(建造者),还有材料厂商提供轮子,引擎等材料。然后只会工人一步一步组装汽车。
每次去找工厂要产品,每次得到的产品对象几乎都一样,能选择的就几种,想要自定义程度更高的产品,自己招工人干,建造者就是这个工人。