生成器模式的定义是:将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
比如生产一台电脑时,指定的生产流程是:生产CPU、生产主板、组装起电脑,那么我们就可以将这三个过程分离出来,然后用一个生产指导类
来调用这三个过程,这时客户端想要生产电脑时,只需要调用生产指导类即可,下面给出例子。
/**
* 生产一台电脑接口
*
* @author Administrator
*
*/
interface BuildComputer
{
/**
* 生产CPU
*/
public void buildCpu();
/**
* 生产主板
*/
public void buildMainBoard();
/**
* 将电脑组装起来
*/
public void assemble();
}
/**
* 生产一台联想电脑 生成器
*
* @author Administrator
*
*/
class BuildLenovoComputer implements BuildComputer
{
@Override
public void buildCpu()
{
System.out.println("生产联想电脑专用CPU");
}
@Override
public void buildMainBoard()
{
System.out.println("生产联想电脑专用主板");
}
@Override
public void assemble()
{
System.out.println("将联想电脑组装起来");
}
}
/**
* 生产戴尔电脑 生成器
*
* @author Administrator
*
*/
class BuildDellComputer implements BuildComputer
{
@Override
public void buildCpu()
{
System.out.println("生产戴尔电脑专用CPU");
}
@Override
public void buildMainBoard()
{
System.out.println("生产戴尔电脑专用主板");
}
@Override
public void assemble()
{
System.out.println("将戴尔电脑组装起来");
}
}
/**
* 指导者,用来指导生成哪个对象
*
* @author Administrator
*
*/
class Director
{
private BuildComputer buildComputer;
public Director(BuildComputer buildComputer)
{
this.buildComputer = buildComputer;
}
/**
* 指导生成器构建最终对象
*/
public void construct()
{
this.buildComputer.buildCpu();
this.buildComputer.buildMainBoard();
this.buildComputer.assemble();
}
}
/**
* 测试类
*
* @author Administrator
*
*/
public class Test
{
public static void main(String[] args)
{
//生产一台联想电脑
BuildComputer buildLenovoComputer = new BuildLenovoComputer();
Director director1 = new Director(buildLenovoComputer);
director1.construct();
System.out.println("----------------------");
//生主一台戴尔电脑
BuildComputer buildDellComputer = new BuildDellComputer();
Director director2 = new Director(buildDellComputer);
director2.construct();
}
}
屏幕打印结果如下:
生产联想电脑专用CPU
生产联想电脑专用主板
将联想电脑组装起来
----------------------
生产戴尔电脑专用CPU
生产戴尔电脑专用主板
将戴尔电脑组装起来