4 生成器模式
生成器模式的核心是将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示。简单说像搭积木一样用相同的步骤可以搭出不同样式的房子。建造房子的步骤是固定的打地基建墙体安装屋顶装修内部但根据不同的需求可以建出不同样式的房子经济房普通地基 砖墙 瓦片屋顶 简单装修豪华别墅深地基 钢筋混凝土墙 琉璃瓦屋顶 豪华装修生成器模式就是让同一个建造过程产出不同样式的产品。1.Product产品要构建的复杂对象由多个部件组成。2.Builder生成器接口定义构建各部件的方法BuildPart()方法3.ConcreteBuilder具体生成器实现Builder接口具体构建逻辑和产品组装4.Director指挥者控制构建流程5.Client客户端创建Director和Builder获取最终产品import java.util.*; public class Client{ public static void main (String[] args) { Director director new Director(); Builder builder1 new Builder1(); director.Construct(builder1); Product product1 builder1.getResult(); product1.info(); Builder builder2 new Builder2(); director.Construct(builder2); Product product2 builder2.getResult(); product2.info(); } } // 产品 class Product{ ListString parts new ArrayListString(); public void Add(String part){ parts.add(part); } public void info(){ System.out.print(产品的组成:); for(String s: parts) System.out.print(s ); System.out.print(\n); } } // 生成器接口Builder abstract class Builder{ public abstract void BuildPart(); public abstract Product getResult(); } // 具体的生成器Builder1、Builder2 class Builder1 extends Builder{ Product product new Product(); Override public void BuildPart(){ product.Add(A); product.Add(B); product.Add(C); } Override public Product getResult(){ return product; } } class Builder2 extends Builder{ Product product new Product(); Override public void BuildPart(){ product.Add(B); product.Add(C); product.Add(E); } Override public Product getResult(){ return product; } } // 指挥者 class Director{ public void Construct(Builder builder){ builder.BuildPart(); } }