首页 > 代码库 > 设计模式(五) : 创建型模式--建造者模式
设计模式(五) : 创建型模式--建造者模式
建造者模式的意图是将产品的内部表象和产品的生产过程分割开来。
类图:
示意性代码:
package com.javadesignpattern.builder; public interface Builder { public void buildPart1(); public void buildPart2(); public Product retrieveProduct(); }
?
1 2 3 4 5 6 7 | package com.javadesignpattern.builder; public class Product { } |
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package com.javadesignpattern.builder; public class ConcreteBuilder implements Builder { private Product product = new Product(); public void buildPart1() { // TODO Auto-generated method stub System.out.println( "---buildPart1---" ); } public void buildPart2() { // TODO Auto-generated method stub System.out.println( "---buildPart2---" ); } public Product retrieveProduct() { // TODO Auto-generated method stub return product; } } |
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package com.javadesignpattern.builder; public class Director { private Builder builder; public void construct(){ builder = new ConcreteBuilder(); builder.buildPart1(); builder.buildPart2(); builder.retrieveProduct(); } //for test public static void main(String[] args){ Director director = new Director(); director.construct(); } } |
在《java与模式》里面还有一种对产品的建造者模式,就是多个建造者,多个product,介个就多说了。
-------建造者和抽象工厂的区别----
个人觉得这两种模式的使用的场景不一样。抽象工厂是用来生产零件的,建造者是用来组装零件的。打个比方,拿汽车的例子来讲,我们可以用抽象工厂去生产车子的零件比如车轮发动机等。汽车也有牌子,比如大众,宝马,奥迪等。这样,单个零件的生产我们可以用抽象工厂。但是如何讲这些零件组装成一辆车,这就是建造者模式关心的问题了。
-------使用场景-----------
A: 需要生成的产品有复杂的内部结构。每一个内部成分本身可以是对象也可以一个对象的组成部分。
B: 需要生成的产品对象的属性相互依赖。建造者模式可以强制实行一种分步骤执行的建造过程。如果一个对象的一个属性必须在另一个属性被赋值之后进行,那么使用建造者便是一个很好的设计思想。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。