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显卡");
}
}