设计模式之建造者模式

bulid模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

举个列子:生产一台电脑则需要配置CPU,内存和显卡。

package com.djk.a;

/**
 * 建造者模式
 * @author djk
 *
 */
public class BuilderTest1
{
    public static void main(String[] args)
    {
        //创建者
        Bulider bulider = new HpBulider();
        
        //指导者主要是来指挥创建者创建产品时做一些复杂的初始化工作
        ComputerDirector computerDirector = new ComputerDirector(bulider);
        computerDirector.set();
        ICommonComputer computer = bulider.getComputer();
        System.out.println(computer);
    }
}

/**
 * 电脑接口
 * @author djk
 *
 */
interface ICommonComputer
{
    //电脑cpu
    void CPU(String CPU);
    
    //内存
    void Memory(String Memory);
    
    //显卡
    void Graphics(String Graphics);
}

/**
 * 电脑实现类
 */
class HpComputer implements ICommonComputer
{
    //cpu
    private String Cpu;
    //内存
    private String memory;
    //显卡
    private String Graphics;

    public String getCpu()
    {
        return Cpu;
    }

    public void setCpu(String cpu)
    {
        Cpu = cpu;
    }

    public String getMemory()
    {
        return memory;
    }

    public void setMemory(String memory)
    {
        this.memory = memory;
    }

    public String getGraphics()
    {
        return Graphics;
    }

    public void setGraphics(String graphics)
    {
        Graphics = graphics;
    }

    public void CPU(String CPU)
    {
        this.Cpu = CPU;
    }

    public void Graphics(String Graphics)
    {
        this.Graphics = Graphics;
    }

    public void Memory(String Memory)
    {
        this.memory = Memory;
    }
    
    public String toString()
    {
        return "CPU:"+this.Cpu +"Memory:"+this.memory+"Graphics:"+this.Graphics;
    }
}

/**
 * 创建者接口
 * @author djk
 *
 */
interface Bulider
{
    //组装
    void setPart(String Cpu,String Memory,String Graphics);
    //得到电脑
    ICommonComputer getComputer();
}

/**
 * Hp创建者
 * @author djk
 *
 */
class HpBulider implements Bulider
{
    //创建的电脑
    private ICommonComputer computer = new HpComputer();
    public ICommonComputer getComputer()
    {
        return computer;
    }

    //组装电脑
    public void setPart(String Cpu, String Memory, String Graphics)
    {
        computer.CPU(Cpu);
        computer.Memory(Memory);
        computer.Graphics(Graphics);
    }
}

/**
 * 指导者
 * @author djk
 *
 */
class ComputerDirector 
{
    //创建者接口
    private Bulider bulider;
    
    public ComputerDirector(Bulider bulider)
    {
        this.bulider = bulider;
    }
    //通知创建者组装电脑
    public void set()
    {
        bulider.setPart("HP CPU", "4G", "hp显卡");
    }
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值