/**
* 建造者模式
*
* 将一个庞杂的对象的构建与它的表现分别,使得一样的构建进程可以创立不同的表现。
*
* 1、建造者接口,定义建造者须要供给的功效
* 2、指挥者类,定义了建造进程
* 3、具体建造者供给建造的具体实现
*
* 长处:
* 1、客户端调用时不用知道内部细节,指定建造者便可
* 2、建造者之间是相互独立又可相互调换的,便于保护/扩大
*
* 与工厂模式的区分
* 工厂模式:着重组装进程
* 建造者模式:着重组装所需零件的制造进程
*
* 工厂模式就像玩积木,原料都差不多,看你如何搭
* 建造者模式像造汽车,整体框架都差不多,但是具体零件相差较大
*/
public class BuiderDemo01 {
public static void main(String[] args) {
ModuleDirector md1 = new ModuleDirector(new InternCoder());
md1.createModule();
ModuleDirector md2 = new ModuleDirector(new NormalCoder());
md2.createModule();
ModuleDirector md3 = new ModuleDirector(new GodlikeCoder());
md3.createModule();
}
}
/**
* 模块建造者接口
*/
interface ModuleBuider{
public void createJAVA();
public void createJSP();
public void createSQL();
}
/**
* 指挥者,指挥建造者创立模块
*/
class ModuleDirector{
private ModuleBuider mb;
public ModuleDirector(ModuleBuider mb){
this.mb = mb;
}
public void createModule(){
mb.createJAVA();
mb.createJSP();
mb.createSQL();
}
}
/**
* 实习生
*/
class InternCoder implements ModuleBuider{
@Override
public void createJAVA() {
System.out.println("实习生编写后台代码");
}
@Override
public void createJSP() {
System.out.println("实习生编写前台代码");
}
@Override
public void createSQL() {
System.out.println("实习生编写SQL语句");
}
}
/**
* 普通程序员
*/
class NormalCoder implements ModuleBuider{
@Override
public void createJAVA() {
System.out.println("普通程序员编写后台代码");
}
@Override
public void createJSP() {
System.out.println("普通程序员编写前台代码");
}
@Override
public void createSQL() {
System.out.println("普通程序员编写SQL语句");
}
}
/**
* 大神
*/
class GodlikeCoder implements ModuleBuider{
@Override
public void createJAVA() {
System.out.println("大神编写后台代码");
}
@Override
public void createJSP() {
System.out.println("大神编写前台代码");
}
@Override
public void createSQL() {
System.out.println("大神编写SQL语句");
}
}/**
* 建造者模式
*
* 将一个庞杂的对象的构建与它的表现分别,使得