您的位置:首页 > 其它

[初级]设计模式--建造者模式

2015-12-31 11:14 232 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/u010398336/article/details/84759112

 

/**
* 建造者模式
*
* 	将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
*
* 	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语句");
}
}

 运行结果:

实习生编写后台代码
实习生编写前台代码
实习生编写SQL语句
普通程序员编写后台代码
普通程序员编写前台代码
普通程序员编写SQL语句
大神编写后台代码
大神编写前台代码
大神编写SQL语句

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: