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

这种模式主要是为了应对一些复杂的对象创建。做过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);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 定义 建造模式是对象的创建模式。建造模式可以将一个产品的内部表象(internal representation)...
    步积阅读 11,881评论 1 7
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,776评论 25 709
  • java设计模式--建造者模式 建造者模式定义 建造者模式:是将复杂对象的构建与表示进行分离,使同样的构建过程会有...
    shuaidong阅读 2,713评论 0 0
  • 我们国家的财政收入支出釆取收支两条线的方式。具体就是 国税、地税、财政等部门负责收钱;财政部门负责花钱。 预...
    高飞振翅阅读 695评论 0 0
  • 1.先生放心,我就去就来。你却要好生伏侍我师父,逐日家三茶六饭,不可欠缺。若少了些儿,老孙回来和你算帐,先捣塌你的...
    梅子欧阳叶梅阅读 3,030评论 0 0