建造者模式

来源:互联网 发布:手机相片加密软件 编辑:程序博客网 时间:2024/06/18 02:07

1.定义

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
何时使用:一些基本部件不会变,而其组合经常变化的时候。
这里写图片描述

//具体产品public class Product {    List<String> parts=new ArrayList<String>();    public void Add(String part){        parts.add(part);    }    public void Show(){        System.out.println("ALL:");        for (String part : parts) {            System.out.println(part);        }    }}
//抽象建造者类public interface Builder {    public void BuildPartA();    public void BuildPartB();    public Product GetResult();}
//具体建造者类public class ConcreteBuilder1 implements Builder {    private Product prodoct=new Product();    @Override    public void BuildPartA() {        prodoct.Add("A");    }    @Override    public void BuildPartB() {        prodoct.Add("B");    }    @Override    public Product GetResult() {        return prodoct;    }}public class ConcreteBuilder2 implements Builder{    private Product product=new Product();    @Override    public void BuildPartA() {        product.Add("X");    }    @Override    public void BuildPartB() {        product.Add("Y");    }    @Override    public Product GetResult() {        return product;    }}
//指挥者类public class Diretor {    public void Construct(Builder builder){        builder.BuildPartA();        builder.BuildPartB();    }}
public class Client {    public static void main(String[] args) {        Diretor diretor=new Diretor();        Builder b1=new ConcreteBuilder1();        Builder b2=new ConcreteBuilder2();        diretor.Construct(b1);        Product p1=b1.GetResult();        p1.Show();        diretor.Construct(b2);        Product p2=b2.GetResult();        p2.Show();    }}
原创粉丝点击