设计模式之建造者模式
设计模式之建造者模式
什么叫建造者模式?
建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
UML
下面用建造者模式的基本代码解释该模式
首先建立一个Product产品类
package builder; public class Product { private String part1; private String part2; public String getPart1() { return part1; } public void setPart1(String part1) { this.part1 = part1; } public String getPart2() { return part2; } public void setPart2(String part2) { this.part2 = part2; } @Override public String toString() { return "Product [part1=" + part1 + ", part2=" + part2 + "]"; } }
其次建立一个抽象建造者类
package builder; public interface Builder { void buildPart1(); void buildPart2(); Product getResult(); }
接着实现具体的建造者类
package builder; public class ConcreteBuilder1 implements Builder { Product product=new Product(); @Override public void buildPart1() { // TODO Auto-generated method stub product.setPart1("part1"); } @Override public void buildPart2() { // TODO Auto-generated method stub product.setPart2("part2"); } @Override public Product getResult() { // TODO Auto-generated method stub return product; } }
package builder; public class ConcreteBuilder2 implements Builder { Product product=new Product(); @Override public void buildPart1() { // TODO Auto-generated method stub product.setPart1("part21"); } @Override public void buildPart2() { // TODO Auto-generated method stub product.setPart2("part22"); } @Override public Product getResult() { // TODO Auto-generated method stub return product; } }
当然还需要一个很重要的类--指挥者,用它来控制建造过程,也用它来隔离用户与建造过程的关联
package builder; public class Director { public void construct(Builder builder) { builder.buildPart1(); builder.buildPart2(); } }
最后测试类
package builder; public class Test { public static void main(String[] args) { Director director=new Director(); Builder builder =new ConcreteBuilder1(); director.construct(builder); Product product=builder.getResult(); System.out.println(product); } }
总结
Builder 是为创建一个Product对象的各个部件指定的抽象接口。
ConcreteBuilder是具体建造者,实现Builder接口,构造和装配各个部件。
Director是构建一个使用Builder接口的对象。
主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。
部分内容参考于他人博客,链接为:http://www.cnblogs.com/java-my-life/archive/2012/04/07/2433939.html
初学《大话设计模式》