zoukankan      html  css  js  c++  java
  • 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对象,消耗内存。

  • 相关阅读:
    Servlet学习总结
    Tomcat学习总结1
    第44周星期日反思
    第44周星期一Tomcat学习2
    第44周星期五忙碌文档的一天
    第44周星期六好文章摘录
    laravel 5.6接入微信第三方授权登陆的主要步骤
    laravel多表登录出现路由调用错误
    cURL error 60: SSL certificate problem...
    传说中Python最难理解的点|看这完篇就够了(装饰器)
  • 原文地址:https://www.cnblogs.com/IT-lss/p/9684968.html
Copyright © 2011-2022 走看看