美文网首页我爱编程
Java设计模式--建造者模式

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

作者: 留给时光吧 | 来源:发表于2018-04-14 15:13 被阅读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);
        }
    }
    

    相关文章

      网友评论

        本文标题:Java设计模式--建造者模式

        本文链接:https://www.haomeiwen.com/subject/ardlkftx.html