美文网首页
设计模式-Builder模式

设计模式-Builder模式

作者: ZjyMac | 来源:发表于2018-03-26 19:34 被阅读0次

    一,java中的 Builder模式

    • 概念
      构建者模式将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离

    • 使用场景
      当构造一个对象需要很多参数的时候,并且参数的个数和类型不固定的时候

    • UML结构图分析

      image.png
      总结:
      1.Builder:为创建产品Product对象的各个部件指定抽象接口
      2.ConcreateBuilder:实现Builder接口,实现各部件结构的构造和装配方法
      3.Product:它是被构建的复杂对象,包含多个组成部件
      4.Directior:指挥者,负责安排负责对象的建造次序,指挥者与抽象Builder之间存在关联关系
    • 实际代码分析

    public class Product  {
        private String partA;
        private String partB;
        private String partC;
    
        public String getPartA() {
            return partA;
        }
    
        public void setPartA(String partA) {
            this.partA = partA;
        }
    
        public String getPartB() {
            return partB;
        }
    
        public void setPartB(String partB) {
            this.partB = partB;
        }
    
        public String getPartC() {
            return partC;
        }
    
        public void setPartC(String partC) {
            this.partC = partC;
        }
    }
    
    
    public abstract class Builder {
        protected Product product = new Product();
    
        public abstract void buildPartA();
    
        public abstract void buildPartB();
    
        public abstract void buildPartC();
    
        public Product getResult() {
            return product;
        }
    }
    
    public class ConcreateBuilder extends Builder{
    
    
        @Override
        public void buildPartA() {
    
        }
    
        @Override
        public void buildPartB() {
    
        }
    
        @Override
        public void buildPartC() {
    
        }
    }
    
    
    public class Director {
        private Builder builder;
    
        public Director(Builder builder) {
            this.builder = builder;
        }
    
        public void setBuilder(Builder builder) {
            this.builder = builder;
        }
    
        public Product construct() {
            builder.buildPartA();
            builder.buildPartB();
            builder.buildPartC();
            return builder.getResult();
        }
    }
    
     Builder builder = new ConcreateBuilder();
            Director director = new Director(builder);
            Product product = director.construct();
    
    • 优点
      松散耦合
      容易修改内部属性
      更好的复用性(具体实现以及算法都可以复用)
    • 缺点
      产生多余的Builder对象以及Dirctor对象,消耗内存
      对于构造过程的暴露

    二,Builder模式在android中的应用

    android中的简单实现

    public class AndroidProduct {
        private String partA;
        private String partB;
        private String partC;
    
        private AndroidProduct(String partA, String partB, String partC) {
            this.partA = partA;
            this.partB = partB;
            this.partC = partC;
        }
    
        public  static class Builder {
            private String partA;
            private String partB;
            private String partC;
    
            public Builder setPartA(String partA) {
                this.partA = partA;
                return this;
            }
    
            public Builder setPartB(String partB) {
                this.partB = partB;
                return this;
            }
    
            public Builder setPartC(String partC) {
                this.partC = partC;
                return this;
            }
    
            public AndroidProduct build() {
                return new AndroidProduct(partA, partB, partC);
            }
        }
    }
    
     AndroidProduct androidProduct = new AndroidProduct.Builder()
    .setPartA("a")
    .setPartB("b")
    .setPartC("c").build();
       
    

    Android中的实际应用:
    1.AlertDialog
    2.Gilde/okhttp

    相关文章

      网友评论

          本文标题:设计模式-Builder模式

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