我爱编程

Java设计模式--建造者模式

2018-04-14  本文已影响0人  留给时光吧

这种模式主要是为了应对一些复杂的对象创建。做过Android开发的朋友一定都用过AlterDialog,这就是Android中典型的Builder模式,其中AlterDialog有许多参数需要去配置,若使用构造方法去生成,则需要一大堆构造方法,所以引入了一个内部了Builder协助构建。

在Effective Java中就提到,在遇到多个构造器参数时,要考虑用到构建器。也许很多朋友也想到了,可以用一堆set方法去构建一个对象,这样就避免了大量的构造函数。但是在调用一条一条的set方法时,类可能处于一种变化的状态,也破坏了某些类的不可变性。使用Builder可以一次性构造一个需要的类,类似于构造方法,具有一定安全性,又避免了繁琐的构造方法。

简单实现:

public class Product {
    private String name;
    private String tag;
    private String category;
    private int price;

    public static class Builder{
        private String name;
        private String tag;
        private String category;
        private int price = 0;

        public Builder(String name,String category){
            this.name = name;
            this.category = category;
        }
        public Builder setTag(String tag){
            this.tag = tag;
            return this;
        }
        public Builder setPrice(int price){
            this.price = price;
            return this;
        }
        public Product build(){
            return new Product(this);
        }
    }

    private Product(Builder builder){
        name = builder.name;
        tag = builder.tag;
        category = builder.category;
        price = builder.price;
    }

    @Override
    public String toString() {
        return "name: " + name + " ,tag: " + tag + " ,category: " + category + " ,price: " + price;
    }
}

测试类

public class test {
    public static void main(String[] args) {
        Product product = new Product.Builder("beef","meat").setTag("fresh").setPrice(100).build();
        System.out.println(product);
    }
}
上一篇下一篇

猜你喜欢

热点阅读