真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java如何實(shí)現(xiàn)Builder建造者模式

小編給大家分享一下Java如何實(shí)現(xiàn)Builder建造者模式,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元五河做網(wǎng)站,已為上家服務(wù),為五河各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、網(wǎng)站建設(shè)、如皋網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、如皋網(wǎng)絡(luò)營銷、如皋企業(yè)策劃、如皋品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供如皋建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com

一、場景描述

建造者模式同工廠模式、抽象工廠模式一樣,用于創(chuàng)建繼承類對象。

工廠模式:Java設(shè)計(jì)模式之工廠模式

抽象工廠模式:Java設(shè)計(jì)模式之抽象工廠模式

所不同的是,工廠模式下,各子類實(shí)現(xiàn)接口,通過工廠類創(chuàng)建子類對象;而建造者模式下,各子類擁有其建造者類,通過它創(chuàng)建不同的父類對象,最終實(shí)現(xiàn)多態(tài),實(shí)際上子類、父類在代碼中是不存在的。

以儀器數(shù)據(jù)采集工具為例,工廠模式下,定義接口“儀器數(shù)據(jù)采集工具”,定義子類“PDF文件數(shù)據(jù)采集工具”和“Excel文件數(shù)據(jù)采集工具”,子類實(shí)現(xiàn)接口。通過工廠類(無論是靜態(tài)工廠類還是抽象工廠類),創(chuàng)建子類對象,這些對象擁有不同的表現(xiàn)方式,即為多態(tài)。

在建造者模式下,定義父類“儀器數(shù)據(jù)采集工具”,然后通過“PDF文件數(shù)據(jù)采集工具的建造者類”和“Excel文件數(shù)據(jù)采集工具的建造者類”來為“儀器數(shù)據(jù)采集工具”的類對象賦予不同的表現(xiàn)方式(為字段賦予不同的值等),最終實(shí)現(xiàn)多態(tài)。

建造者模式下,Director好比導(dǎo)演一般,它來調(diào)用建造者Builder完成對類對象的創(chuàng)建,調(diào)用者調(diào)用Director即可,如下圖所示:

Java如何實(shí)現(xiàn)Builder建造者模式

當(dāng)然,工廠模式字面意義是用于創(chuàng)建對象,而建造者模式字面意義是建造不同的對象,兩者能實(shí)現(xiàn)類似的功能,但兩者的應(yīng)用場景大可不同。

工廠模式應(yīng)用于某簡單類對象的創(chuàng)建,而建造者模式應(yīng)用于復(fù)雜類對象的建造,具體可百度學(xué)習(xí)體會(huì)。

擴(kuò)展時(shí),例如新增Word文件數(shù)據(jù)采集,創(chuàng)建其Builder類即可,該類實(shí)現(xiàn)Word文件數(shù)據(jù)采集程序的創(chuàng)建工作;調(diào)用時(shí)使用WordBuilder類即可調(diào)用。

二、示例代碼

(父)類:

package lims.designpatterndemo.builderdemo;

public class EquipmentDataCapture {
  private String filePath;
  private String equipmentData;
  //
  public String getFilePath(){
    return this.filePath;
  }
  public void setFilePath(String filePath){
    this.filePath = filePath;
  }
  public String getEquipmentData(){
    return this.equipmentData;
  }
  public void setEquipmentData(String equipmentData){
    this.equipmentData = equipmentData;
  }
}

建造者接口:

package lims.designpatterndemo.builderdemo;

public interface EquipmentDataCaptureBuilder {
  //部件
  void buildFilePath();
  void buildEquipmentData();
  //組裝
  EquipmentDataCapture buildEquipmentDataCapture();
}

PDF數(shù)據(jù)采集建造者類:

package lims.designpatterndemo.builderdemo;

public class PdfFileCaptureBuilder implements EquipmentDataCaptureBuilder{
  //
  EquipmentDataCapture capture;
  //構(gòu)造
  public PdfFileCaptureBuilder(){
    capture = new EquipmentDataCapture();
  }
  //
  @Override
  public void buildFilePath() {
    capture.setFilePath(".pdf");
  }

  @Override
  public void buildEquipmentData() {
    capture.setEquipmentData("pdf file content");
  }

  @Override
  public EquipmentDataCapture buildEquipmentDataCapture() { 
    return capture;
  }

}

Excel數(shù)據(jù)采集建造者:

package lims.designpatterndemo.builderdemo;

public class ExcelFileCaptureBuilder implements EquipmentDataCaptureBuilder{

  //
  EquipmentDataCapture capture;
  //構(gòu)造
  public ExcelFileCaptureBuilder(){
    capture = new EquipmentDataCapture();
  }
  @Override
  public void buildFilePath() {
    capture.setFilePath(".xlsx");
  }

  @Override
  public void buildEquipmentData() {
    capture.setEquipmentData("excel file content");
  }

  @Override
  public EquipmentDataCapture buildEquipmentDataCapture() {
    return capture;
  }

}

Director類,可以簡單理解為導(dǎo)演類:

package lims.designpatterndemo.builderdemo;

public class EquipmentDataCaptureDirector {
  public EquipmentDataCapture constructEqiupmentDataCapture(EquipmentDataCaptureBuilder builder){
    builder.buildFilePath();
    builder.buildEquipmentData();
    EquipmentDataCapture capture = builder.buildEquipmentDataCapture();
    return capture;
  }
}

調(diào)用端示例:

package lims.designpatterndemo.builderdemo;

public class BuilderDemo {

  public static void main(String[] args) {
    EquipmentDataCaptureDirector direcotr = new EquipmentDataCaptureDirector();
    EquipmentDataCaptureBuilder builder = new PdfFileCaptureBuilder();
    builder = new ExcelFileCaptureBuilder();
    EquipmentDataCapture capture = direcotr.constructEqiupmentDataCapture(builder);
    System.out.println(capture.getEquipmentData());
  }

}

以上是“Java如何實(shí)現(xiàn)Builder建造者模式”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


本文題目:Java如何實(shí)現(xiàn)Builder建造者模式
本文地址:http://weahome.cn/article/jjiepj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部