设计模式整理

建造者模式 (Builder)

2017-10-27  本文已影响0人  MrWangLei6666

举例说明:

/**
 * 作者:wanglei 
 * 邮箱:229846388@qq.com
 * 建造者模式
 * 建造请求 接口 (定义组装的过程(Builder):组装电脑的过程)
 */
public abstract class Builder {

    /**
     *第一步:装CPU 声明为抽象方法,具体由子类实现
     */
    public abstract void BuildCPU();

    /**
     * 第二步:装主板 声明为抽象方法,具体由子类实现
     */
    public abstract void BuildMainboard();

    /**
     * 第三步:装硬 声明为抽象方法,具体由子类实现
     */
    public abstract void BuildHD();

    /**
     * @return 返回产品的方法:获得组装好的电脑
     */
    public abstract Computer GetComputer();
}
import java.util.ArrayList;
import java.util.List;

/**
 * 作者:wanglei 
 * 邮箱:229846388@qq.com
 * 建造者模式
 * 定义具体产品类(Product):电脑
 */
public class Computer {

    /**
     * 电脑组件的集合
     */
    private List<String> parts = new ArrayList<String>();

    /**
     * 用于将组件组装到电脑里
     */
    public void Add(String part){
        parts.add(part);
    }

    public void show(){
        for(String args : parts){
            System.out.println(args+" OK");
        }
        System.out.println("电脑组装完成,请验收");
    }

}
/**
 * 作者:wanglei 
 * 邮箱:229846388@qq.com
 * 建造者模式
 * 创建具体的建造者(ConcreteBuilder):装机人员
 * 具体建造者
 */
public class ConcreteBuilder extends Builder{

    /**
     * 创建产品实例
     */
    Computer computer = new Computer();

    @Override
    public void BuildCPU() {
        computer.Add("CPU");
    }

    @Override
    public void BuildMainboard() {
        computer.Add("Mainboard");
    }

    @Override
    public void BuildHD() {
        computer.Add("HD");
    }

    /**
     * @return 返回组装成功的电脑
     */
    @Override
    public Computer GetComputer() {
        return computer;
    }
}
/**
 * 作者:wanglei 
 * 邮箱:229846388@qq.com
 * 建造者模式
 * 电脑城老板委派任务给装机人员(Director)
 * 导演
 */
public class Director {

    /**
     * @param builder 指挥装机人员组装电脑
     */
    public void Construct(Builder builder){
        builder.BuildCPU();
        builder.BuildMainboard();
        builder.BuildHD();
    }
}

/**

/***

上一篇下一篇

猜你喜欢

热点阅读