java 创建者模式_java设计模式_建造者模式

3d2a82af2b10992d837a796e3225b3c7.png

/**

*

*/

package com.wangbiao.design.builder;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

/**

* @Title: Product.java

* @Package com.wangbiao.design.builder

* @Description: TODO

* @author wangbiao

* @date 2014-9-26 上午10:06:53

* @version V1.0

*/

public class Product {

List parts = new ArrayList();

public void addPart(String part){

parts.add(part);

}

public void display(){

Iterator iter =  parts.iterator();

while(iter.hasNext()){

System.out.println(iter.next());

}

}

}

/**

*

*/

package com.wangbiao.design.builder;

/**

* @Title: Builder.java

* @Package com.wangbiao.design.builder

* @Description: TODO

* @author wangbiao

* @date 2014-9-26 上午10:16:28

* @version V1.0

*/

public abstract class Builder {

public abstract void builderPartA();

public abstract void bulderPartB();

public abstract Product getResult();

}

/**

*

*/

package com.wangbiao.design.builder;

/**

* @Title: ConcreteBuilderA.java

* @Package com.wangbiao.design.builder

* @Description: TODO

* @author wangbiao

* @date 2014-9-26 上午10:18:47

* @version V1.0

*/

public class ConcreteBuilderA extends Builder {

private Product product = new Product();

/* (non-Javadoc)

* @see com.wangbiao.design.builder.Builder#builderPartA()

*/

@Override

public void builderPartA() {

// TODO Auto-generated method stub

product.addPart("大屏");

}

/* (non-Javadoc)

* @see com.wangbiao.design.builder.Builder#bulderPartB()

*/

@Override

public void bulderPartB() {

// TODO Auto-generated method stub

product.addPart("金属机身");

}

/* (non-Javadoc)

* @see com.wangbiao.design.builder.Builder#getResult()

*/

@Override

public Product getResult() {

// TODO Auto-generated method stub

return product;

}

}

/**

*

*/

package com.wangbiao.design.builder;

/**

* @Title: ConcreteBuilderB.java

* @Package com.wangbiao.design.builder

* @Description: TODO

* @author wangbiao

* @date 2014-9-26 上午10:19:05

* @version V1.0

*/

public class ConcreteBuilderB extends Builder {

private Product product = new Product();

/* (non-Javadoc)

* @see com.wangbiao.design.builder.Builder#builderPartA()

*/

@Override

public void builderPartA() {

// TODO Auto-generated method stub

product.addPart("小屏");

}

/* (non-Javadoc)

* @see com.wangbiao.design.builder.Builder#bulderPartB()

*/

@Override

public void bulderPartB() {

// TODO Auto-generated method stub

product.addPart("塑料机身");

}

/* (non-Javadoc)

* @see com.wangbiao.design.builder.Builder#getResult()

*/

@Override

public Product getResult() {

// TODO Auto-generated method stub

return product;

}

}

/**

*

*/

package com.wangbiao.design.builder;

/**

* @Title: Director.java

* @Package com.wangbiao.design.builder

* @Description: TODO

* @author wangbiao

* @date 2014-9-26 上午10:19:19

* @version V1.0

*/

public class Director {

public void  createProduct(Builder builder){

builder.builderPartA();

builder.bulderPartB();

}

}

/**

*

*/

package com.wangbiao.design.builder;

/**

* @Title: Client.java

* @Package com.wangbiao.design.builder

* @Description: TODO

* @author wangbiao

* @date 2014-9-26 上午10:16:10

* @version V1.0

*/

public class Client {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

/*

*建造者模式的好处是分离了建造代码和表示代码,隐藏了建造的过程。

*建造者模式适用于创建复杂对象的逻辑独立于创建过程和装配方式的时候 。

*

*/

Director director = new Director();

Builder builderA = new ConcreteBuilderA();

Builder builderB = new ConcreteBuilderB();

director.createProduct(builderA);

Product p1 = builderA.getResult();

p1.display();

director.createProduct(builderB);

Product p2 = builderB.getResult();

p2.display();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值