建造者模式:
属于创建型模式,和之前的工厂模式很相似。两者相比的话,建造者模式创建的对象是复杂的对象,而工厂模式创建的都是简单的单一对象。
建造者模式就像一个 流水线,会把各种零件按照一定的顺序组装成一个完整的对象。
比如:一个简单的电脑,由主板,cpu和显示器组成,而且组装一个电脑我们必须按照先装主板,然后装上CPU,最后装上显示器 这个步骤。
这时我们就靠建造者模式来帮我们
控制这个步骤。看代码:
package com.pattern.build.builder; public interface Computer { public void mainboard();// 主板 public void cpu();// cpu public void screen();// 屏幕 public void computor();// 完整电脑 }
package com.pattern.build.builder; public interface Board {//主板 public void board(); }
package com.pattern.build.builder; public interface Cpu {//cpu public void cpu(); }
package com.pattern.build.builder; public interface Screen {//屏幕 public void screen(); }
package com.pattern.build.builder; public class LenovoComputer implements Computer{ // 联想电脑 private Screen screen; private Board board; private Cpu cpu; @Override public void screen() { this.screen = new Screen(){ @Override public void screen() { System.out.println("lenovo screen"); } }; } @Override public void mainboard() { this.board = new Board(){ @Override public void board() { System.out.println("lenovo board"); } }; } @Override public void cpu() { this.cpu = new Cpu(){ @Override public void cpu() { System.out.println("lenovo cpu"); } }; } @Override public void computor() { screen.screen(); board.board(); cpu.cpu(); } }
package com.pattern.build.builder; public class Builder {//建造者 private Computer c; public Builder(Computer c){ this.c = c; } public void build(){ c.mainboard();//先组装主板 c.cpu();//再按上CPU c.screen();//最后组装屏幕 } }
package com.pattern.build.builder; public class Client { public static void main(String[] args) { Computer c = new LenovoComputer(); Builder b = new Builder(c); b.build(); c.computor(); } }
很简单,不用多说,很明了。