###建立者模式 ####建立者模式优势 在建立者模式中客户端再也不负责对象的建立和组装,而是由一个具体的组装类来完成这项功能,将组装的责任交给组装类,客户端只负责对象的调用,从而更加明确了各个类的职责。ui
####建立者模式缺点 缺点:利用建立者模式能够建立出不一样类型的产品,可是若是要建立的产品差别很是大就须要编写多个建立者类来实现,这无疑增长了代码的复杂性,并且建立者类只是在构造相关部件的发杂关系上有优点,若是要增长一个部件仍是须要改变原有的代码,增长新的模块。设计
####建立者模式和工厂模式区别 工厂模式(工厂方法,简单工厂,抽象工厂)的关注点仅仅是最终产品,而建造者模式关注的除了产品以外,它还关心着产品构造的细节,这一点是Builder模式和Factory模式最显著的区别。code
####建立者模式代码实现建房子 我要一座房子住,但是我不知道怎么盖(简单的砌墙,层次较低),也不知道怎么样设计(建几个房间,几个门好看,层次较高),因而我须要找一帮民工,他们会砌墙,还得找个设计师,他知道怎么设计,我还要确保民工听设计师的领导,而设计师自己也不干活,光是下命令,这里砌一堵墙,这里砌一扇门,这样民工开始建设,最后,我能够向民工要房子了。在这个过程当中,设计师是什么也没有,除了他脑子里的设计和命令,因此要房子也是跟民工要,记住了!对象
// 工人接口,定义了各个工人所要进行的工所做。他们负责进行具体部件如窗户,地板的建造。 // 同时由于房子是民工建的,所以建设完成后由他把房子递交回房主 public interface Builder { void makeWindow(); void makeFloor(); Room getRoom(); } // 具体的工人->名工建造 public class MingGong implements Builder { private String window=""; private String floor=""; public void makeWindow() { window=new String("window"); } public void makeFloor(){ floor=new String("floor"); } // 回交房子给房主 public Room getRoom() { if((!window.equals(""))&&(!floor.equals(""))) { System.out.println("room ready!"); return new Room(); } else return null; } } //设计者设计房屋可是本身不去建造,指挥工人去建造 public class Designer { public void order(Builder builder){ builder.makeWindow(); builder.makeFloor(); } } //最终的产品->房屋 public class Room { } public class Client { public static void main(String[] args) { //建造者 Builder builder = new MingGong(); //设计师 Designer designer = new Designer(); //指挥建造 designer.order(builder); //获取房屋 builder.getRoom(); } }