建造者模式
一、建造者模式
当需要创建一些复杂的对象,而且这些对象当中的内部建造顺序稳定的时候,就可以使用建造者模式。
即是将一个复杂对象的构造与表示分离,使得同样的构建过程可以创建不同的表示,提了依赖倒转原则,细节依赖于抽象。
二、结构图
Product是具体产品;
Builder是为创建一个Product对象的各个部件指定的抽象接口;
而ConcreteBuilder则是具体的建造者,实现Builder接口,实现各个部件构造的细节,构造和装配各个部件;
Director充当一个指挥的角色,根据客户需要构建一个使用Bilder接口的对象。
三、示例
import java.util.ArrayList; import java.util.List; //产品类,由多个部件构成 class Product{ List<String> parts=new ArrayList<>(); //添加产品部件 public void add(String content){ parts.add(content); } public void show(){ System.out.println("创建的产品:"); for (String content:parts) { System.out.println(content); } } } //Builder类,抽象建造者,确定产品由什么部件组成, interface Builder{ void buildPartA(); void buildPartB(); Product getResult(); } //ConcreteBuilder类是具体建造者 class ConcreteBuilderOne implements Builder{ private Product product=new Product(); @Override public void buildPartA() { product.add("one的部件A"); } @Override public void buildPartB() { product.add("one的部件B"); } @Override public Product getResult() { return product; } } class ConcreteBuilderTwo implements Builder{ private Product product=new Product(); @Override public void buildPartA() { product.add("two的部件A"); } @Override public void buildPartB() { product.add("two的部件B"); } @Override public Product getResult() { return product; } } //Director类是指挥者,指挥建造过程 class Director{ public void construct(Builder builder){ builder.buildPartA(); builder.buildPartB(); } } public class BuilderPattern { public static void main(String[] args) { //最后,客户无需知道具体的建造过程 Director director=new Director(); Builder concreteBuilderOne=new ConcreteBuilderOne(); Builder concreteBuilderTwo=new ConcreteBuilderTwo(); director.construct(concreteBuilderOne); Product productOne=concreteBuilderOne.getResult(); productOne.show(); director.construct(concreteBuilderTwo); Product productTwo=concreteBuilderTwo.getResult(); productTwo.show(); } }
输出结果:
菜甜二的学习笔记and总结啊。。。总会遇到挫折,可是还是要保持开阔的心态才能开心的学习啊,坚持吧。