当前位置: 首页 > news >正文

无代码网站开发/百度推广运营这个工作好做吗

无代码网站开发,百度推广运营这个工作好做吗,公司网站建设找谁,更新wordpress需要ftp嗯,大家是否在开发过程中,经常遇到一个类拥有许多的属性呢。为了使这个类的使用便捷,我们通常情况下会给这个类多个构造器以及一个默认的无参数构造器。 但是当参数的个数达到四个或者更多的时候,你是否会经常忘记这几个参数之间…

嗯,大家是否在开发过程中,经常遇到一个类拥有许多的属性呢。为了使这个类的使用便捷,我们通常情况下会给这个类多个构造器以及一个默认的无参数构造器。

但是当参数的个数达到四个或者更多的时候,你是否会经常忘记这几个参数之间的次序了呢。下面给出一个列子:

class A{

    private String a;

    private String b;

    private String c;

    private String d;

    private String e;   

    private String f;

    public A(){}

    public A(String a){

    // initialization in here

    }

 

    public A(String a, String b){}

    public A(String a, String b, String c){}

    public A(String a, String b, String c, String d){}   

    public A(String a, String b, String c, String d){}

    public A(String a, String b, String c, String d, String e){}

    public A(String a, String b, String c, String d, String e, String f){}  

}   

 

对于这样的一个类,拥有那么多的属性,并且构造器有多个,该如何初始化呢?如果用初始化:new A("a", "b", "c", "d", "e", "f");   你还记得住这些参数之间的次序吗??

你确保没有使用错误码???

所以为了解决这个问题,我们可以给类的每个属性都添加一个队形的setXxx()的方法,在使用的过程中,如下:

A a = new A();

a.setA("a");

a.setB("b");

...

使用起来就更加清晰和明了了。但是这样方式,使得该类的其他属性在被创建之后被修改,给程序带来了一些不安全性。所以为了解决这个矛盾,可以使用builder(构建器)设计模式了,下面给出一个具体点的列子:

package net.itaem.test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * how to use the builder design pattern
 * @author luohong
 * */
public class ExcelTool {

 // the property be given and can't change again, so this class instance is safe when creating

 private final String sheetname;
 private final boolean is2007;
 private final List<String> headerList;
 private final List<ArrayList<Object>> contentList;
 private final String dateFormat;
 private final OutputStream outStream;
 
 public String toString(){
  return "sheetname:" + sheetname + ", is2007:" + ",headerList:" 
         + headerList + ", dateFormat:" + dateFormat + ", contentList:" 
         + contentList + ", outStream" + outStream + ", is2007:" + is2007; 
 }
 
 public static class ExcelToolBuilder{
  public String sheetname;
  public boolean is2007;
  public List<String> headerList;
  public List<ArrayList<Object>> contentList;
  public String dateFormat;
  public OutputStream outStream;
  
  public ExcelToolBuilder(String sheetname, OutputStream outStream){
   this.sheetname = sheetname;
      this.outStream = outStream;
  }
  
  public ExcelToolBuilder is2007(boolean is2007){
   this.is2007 = is2007;
   return this;
  }
  
  public ExcelToolBuilder headerList(List<String> headerList){
   this.headerList = headerList;
      return this;
  }
  
  public ExcelToolBuilder contentList(List<ArrayList<Object>> contentList){
   this.contentList = contentList;
   return this;
  }
  
  public ExcelToolBuilder outStream(OutputStream outStream){
   this.outStream = outStream;
      return this;
  }
  
  public ExcelToolBuilder dateFormat(String dateFormat){
   this.dateFormat = dateFormat;
   return this;
  }
  
  public ExcelTool builder(){
   return new ExcelTool(this);
  }
  
 }
 
 private ExcelTool(ExcelToolBuilder etb){
  contentList = etb.contentList;
     headerList = etb.headerList;
  dateFormat = etb.dateFormat;
  outStream = etb.outStream;
  sheetname = etb.sheetname;
  is2007 = etb.is2007;
 }
 
 
 /**
  * test how to use this class to initialize
  * */
 public static void main(String[] args) throws FileNotFoundException {
  
  ExcelTool et = new ExcelTool.ExcelToolBuilder("example.xls", 
    new FileOutputStream("c:\\example.xls"))
          .is2007(true).contentList(null).dateFormat("yyyy-MM-dd")
          .builder();
  //这是一种链式编程风格,使用起来更加清晰明了
  System.out.println(et);
 }
}

 

注意点:在使用builder的时候,让设置每个属性之后返回他自己本身,这样子可以采用链接的变成风格,使用起来更加方便快捷,具体部分可以参考红色字体部分.

缺点:当然,你也看到了,在使用构建器的时候,必须利用另外一个类来实例化另外一个类,这样子会使创建的时候创建更多的对象。这样子会损耗一定的性能...不过带来的好处是非常明显的。因为使用builder模式,每次设置属性的时候,都是具名的方法操作,是开发人员更容易使用,并且不需要给宿主类增加相应的setXxx方法,这样子,这个宿主类在创建之后是不可以修改的,在一些安全模式比较高的程序中,这点也是很重要的

https://blog.csdn.net/lms1719/article/details/70741691

http://www.jmfq.cn/news/5238343.html

相关文章:

  • 网站建设预算明细/百度小程序入口
  • 沈阳做网站最好的公司/经典软文案例
  • 全网视频合集网站建设/如何推广品牌
  • 做五金有哪些网站推广/广告设计与制作需要学什么
  • 做网站有多赚钱/站长之家查询工具
  • 长春制作门户网站的公司/网站推广软件免费版
  • 付费推广方式有哪些/长沙seo优化推荐
  • 肇庆企业免费建站/推广发帖网站
  • 做网站的图片分类/seo排名资源
  • c 做网站怎么显示歌词/产品推广宣传方案
  • 做网站页面怎么做/seo排名优化工具
  • 苹果做封面下载网站/seo顾问服务 品达优化
  • 大型网站设计公司/哪里有永久免费建站
  • 做网站要学哪些/seo优化关键词放多少合适
  • 外贸专业网站制作/网络软文案例
  • 好看的网站颜色搭配/爱站网络挖掘词
  • 汽车app网站建设/云搜索神器
  • 网站开发工具安卓版/sem数据分析
  • 动态网站开发与全程实例/优化网站教程
  • 教学网站/抖音关键词排名
  • 做合法的海外购网站需要什么手续/广州网站排名优化公司
  • 设置本机外网ip做网站/百度关键词指数查询
  • 湖南的商城网站建设/专门开发小程序的公司
  • 如何做网站新手引导/重庆网站搜索引擎seo
  • 政府门户网站建设多元化/陕西网站建设网络公司
  • 做模型的网站/宁德seo培训
  • 建设流网站项目/中央常委成员名单
  • 朝阳公司做网站/淘宝指数在线查询
  • 社交网站模板/淄博网络推广公司哪家好
  • 网站开发方案书/seo交流群