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

java设计模式_建造者模式

时间:2014-09-26 11:51:19      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:des   http   io   os   java   ar   sp   2014   art   

bubuko.com,布布扣


/**
 * 
 */
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<String> parts = new ArrayList<String>();
    
    public void addPart(String part){
        parts.add(part);
    }
    
    public void display(){
        Iterator<String> 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();
        
    }

}


java设计模式_建造者模式

标签:des   http   io   os   java   ar   sp   2014   art   

原文地址:http://my.oschina.net/u/617909/blog/318807

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