• Builder 设计模式


    public class xxxConfig{
      //需要设置的字段
       private String mName;
       private String mPossword;    
      public static class Build{
         //需要设置的字段
           private String mName;
           private String mPossword;
        private xxxConfig(){}

        private Build setName(String name){
          mName = name;
          return this;
        }  
        public Build setPossword(String password){
          mPassword = password;
          return this;
        } 
        public void applyConfig(xxxConfig config){
          config.mName = this.mName;
          config.mPassword = this.mPassword;
        }

        public xxxConfig create(){
          xxxConfig config = new xxxConfig();
          applyConfig(config);
          return config;
        }
      }
    }

      

    class xxx{
        private xxxConfig mConfig;
       public void init(xxxConfig config){
         mConfig = config;
        //检测config的合法性,做一些初始化操作
        checkConfig();
       }

       private void checkConfig(){
        if(mConfig.mName != null){
          //使用name的具体操作
        }
       }
    }


    调用:
      xxxConfig config = xxxConfig.Build.setName("tom").setPassword("123").create();
      new xxx().init(config);

      

     使用场景:

      1、需要生成的产品对象有复杂的内部结构。
      2、需要生成的产品对象的属性相互依赖,建造者模式可以强迫生成顺序。
      3、在对象创建过程中会使用到系统中的一些其它对象,这些对象在产品对象的创建过程中不易得到。

    优点:

      1.良好的封装性,可以使客户端不必知道产品内部组成的细节。

      2.独立,容易扩展

    缺点:

      产生多余的Builder对象以及Director对象,消耗内存。

  • 相关阅读:
    yum安装mysql5.7和8.0版本
    centos7永久修改主机名
    centos7 安装 oracle jdk(非open-jdk)
    yum安装Nginx
    该文件没有与之关联的程序来执行该操作。请安装应用,若已经安装应用,请在"默认应用设置
    java 通过url地址 获取视频时长
    获取视频属性工具类
    redis看门狗
    mysql中group_concat函数的使用
    mybatis-config.xml配置
  • 原文地址:https://www.cnblogs.com/IT-lss/p/9684968.html
Copyright © 2020-2023  润新知