码迷,mamicode.com
首页 > 编程语言 > 详细

《JAVA与模式》之建造者模式

时间:2014-06-28 18:06:12      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   color   get   

1.概念

    将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 [构建与表示分离,同构建不同表示]

    与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品。

消费者最后是通过建造者得到产品而不是通过指导者,另外,消费者无法直接让建造者建造产品,这个可能是建造者跟工厂方法的最大区别

工厂方法是需求者可以直接接触到工厂对象,然后指派其生产。

  建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。

工厂方法角色

1.抽象产品

2.具体产品

3.抽象建造者

4.具体建造者

5.指挥者

消费者通过指挥者调动具体的建造者,生产具体产品

举个例子,我要装修房子,我请了一批工人,但是我不是搞设计的,所以我又请了装修公司的人(指挥者),让他们负责调度

工人(建造者),而这些工人是我介绍给指挥者的,最后通过工人的努力,得到我想要的效果(产品),这个产品是工人给你的,而不是设计师

设计师只负责设计,指挥工人而已


 

先看一个简单的实例

 1 interface Product{
 2     
 3     public void part1();
 4     public void part2();
 5     public void part3();
 6     
 7 }
 8 class ProductOne implements Product{
 9 
10     public void part1() {
11         System.out.println("ProductOne part1");
12     }
13     public void part2() {
14         System.out.println("ProductOne part2");
15     }
16     public void part3() {
17         System.out.println("ProductOne part3");
18     }
19 }
20 class ProductTwo implements Product{
21 
22     public void part1() {
23         System.out.println("ProductTwo part1");
24     }
25     public void part2() {
26         System.out.println("ProductTwo part2");
27     }
28     public void part3() {
29         System.out.println("ProductTwo part3");
30     }
31 }
32 interface AbstractBuilder{
33     
34     //获得建造好的产品
35     public Product getProduct();
36     //创建产品 好拗口 因为是生产产品 工厂模式?????
37     public void buildProduct();
38 }
39 
40 class ProductTwoBuilder implements AbstractBuilder{
41     private Product product=new ProductTwo();
42     
43     public void buildProduct() {
44         product.part1();
45         //product.part2();//不是所有的步骤都需要的
46         product.part3();
47     }
48     public Product getProduct() {
49         System.out.println("ProductTwo 生产完毕");
50         return this.product;
51     }
52 }
53 class ProductOneBuilder implements AbstractBuilder{
54     private Product product=new ProductOne();
55     public void buildProduct() {
56         product.part2();
57         product.part3();
58     }
59     public Product getProduct() {
60         System.out.println("ProductOne 生产完毕");
61         return this.product;
62     }
63 }
64 //指挥者 等同于抽象工厂中的 具体工厂
65 class Director {
66     private AbstractBuilder builder;
67     public Director(AbstractBuilder builder){
68         
69         this.builder=builder;
70     }
71     public void construct(){
72         
73         builder.buildProduct();
74     }
75     
76 }

参考地址:
http://www.cnblogs.com/devinzhang/archive/2012/01/06/2314670.html
http://haolloyin.blog.51cto.com/1177454/333155

《JAVA与模式》之建造者模式,布布扣,bubuko.com

《JAVA与模式》之建造者模式

标签:style   blog   http   java   color   get   

原文地址:http://www.cnblogs.com/draem0507/p/3797182.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!