设计模式之一【建造者模式】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38361347/article/details/85094749

java设计模式之建造者模式

建造者模式也属于创建型模式之一,也是用来创建对象的。

建造者模式就是一步一步的创建一个复杂的对象,建一个复杂的对象与其表示分离,使得同样的构建可以创建不同的表示。

建造过程中可以分为三个角色:

建造角色:定义生成实例对象需要的方法;

具体的建造的角色:实现生成实例所需要的所有方法,并且生成获取最终实例对象的方法;

监工角色:有监工定义并且调用具体的建造的角色中生成实例对象的方法;

使用者:使用这个模式。

实例对象类

//产品类
public class Product {

    private String name1;
    private String name2;
    private String name3;


    public String getName1() {
        return name1;
    }

    public void setName1(String name1) {
        this.name1 = name1;
    }

    public String getName2() {
        return name2;
    }

    public void setName2(String name2) {
        this.name2 = name2;
    }

    public String getName3() {
        return name3;
    }

    public void setName3(String name3) {
        this.name3 = name3;
    }



}

建造者角色

//建造者抽象类
public abstract class Build {

    abstract void build1();
    abstract void build2();
    abstract void build3();

    //需要构建的产品对象
    protected Product product = new Product();

    public void setProduct(Product product) {
        this.product = product;
    }

    //用来返回建造后的product对象
    public  Product getResult(){
        return  product;
    }
}

具体的建造的角色

//实现类,对product属性字段分别设置值
public  class ConcreteBuilder extends  Build {

    @Override
    void build1() {
        product.setName1("nam1....");
    }

    @Override
    void build2() {
        product.setName2("nam2....");
    }

    @Override
    void build3() {
        product.setName3("nam3....");
    }


}

监工角色

//指挥类  来指挥各个部件的创造,并且将组装好的产品返回给客户端。
public class Director {

    private Build build;

    public Director(Build build){
        this.build=build;
    }

    public void setBuild(Build build) {
        this.build = build;
    }


    //对外提供结果集
    public Product getProcuct(){
        //开始建造
        build.build1();
        build.build2();
        build.build3();
        //调用 建造的结果对象
        return build.getResult();
    }

}

使用者

//测试建造者模式

public static void main(String[] args) {

    //创建产品
    Build build = new ConcreteBuilder();
    //指挥每个零部件的创建
    Director director = new Director(build);
    Product procuct = director.getProcuct();
    System.out.println(procuct.getName1());
    System.out.println(procuct.getName2());
    System.out.println(procuct.getName3());

}

建造者模式侧重于将各个 部件组装成一个产品,返回最终的对象实例!

猜你喜欢

转载自blog.csdn.net/weixin_38361347/article/details/85094749
今日推荐