美文网首页
Java建造者模式

Java建造者模式

作者: 我是少年520 | 来源:发表于2018-11-02 17:33 被阅读19次
    建造者模式是将多个零件集中起来创建复合对象,所谓复合对象就是指某个类具有多个不同的属性

    一 、建造者模式的写法

    public class Computer {
    
        private String name;
        private String CPU;
        private String GPU;
    
        private Computer(Builder builder) {
            this.name = builder.name;
            this.CPU = builder.CPU;
            this.GPU = builder.GPU;
        }
    
        public String getName() {
            return name;
        }
    
        public String getCPU() {
            return CPU;
        }
    
        public String getGPU() {
            return GPU;
        }
    
        public static class Builder {
    
            private String name;
            private String CPU;
            private String GPU;
    
            public Builder setName(String name) {
                this.name = name;
                return this;
            }
    
            public Builder setCPU(String CPU) {
                this.CPU = CPU;
                return this;
            }
    
            public Builder setGPU(String GPU) {
                this.GPU = GPU;
                return this;
            }
    
            public Computer build() {
                return new Computer(this);
            }
        }
    
    }  
    

    使用

    Computer computer = new Computer.Builder()
                   .setCPU("AMD")
                   .setGPU("英伟达")
                   .setName("联想")
                 .build();  
    

    二 、一般的写法

    public class Computer {
    
        private String name;
        private String CPU;
        private String GPU;  
    
        public Computer() {
        }
    
        public Computer setName(String name) {
            this.name = name;
            return this;
        }
    
        public Computer setCPU(String CPU) {
            this.CPU = CPU;
            return this;
        }
    
        public Computer setGPU(String GPU) {
            this.GPU = GPU;
            return this;
        }  
    

    使用

    Computer computer = new Computer()
                  .setCPU("AMD")
                  .setGPU("英伟达")
                  .setName("联想");  
    

    三、对比

    你可能会说第二种方法写法上不是更简便吗,其实这也是我当初的疑问,下面我们来看一下建造者模式的优缺点。

    优点
    1. 将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰,使得我们能够更加精确的控制复杂对象的产生过程。
    2. 将产品的创建过程与产品本身分离开来,可以使用相同的创建过程来得到不同的产品。也就说细节依赖抽象。
    3. 每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者,用户使用不同的具体建造者即可得到不同的产品对象。
    缺点
    1. 建造者模式所创建的产品一般具有较多的共同点,其组成部分相似,如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制。
    2. 如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。


    四、总结
    总之,建造者模式是将复杂对象的创建和对象创建的过程分离开,这样使得代码的逻辑清晰,鲜明易懂。

    相关文章

      网友评论

          本文标题:Java建造者模式

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