日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Builder模式能用來解決什么問題?

建造模式,也有翻譯成生成器模式的,大家看到后知道他們是一個(gè)東西,都是Builer Pattern翻譯過來的就行。它是一種對(duì)象構(gòu)建模式,是將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。

創(chuàng)新互聯(lián)擁有10多年成都網(wǎng)站建設(shè)工作經(jīng)驗(yàn),為各大企業(yè)提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)服務(wù),對(duì)于網(wǎng)頁設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、App定制開發(fā)、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、空間域名等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營銷、管理等網(wǎng)站化運(yùn)作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項(xiàng)目的能力。

那么什么情況下適合使用建造模式呢?

  • 當(dāng)要構(gòu)建的對(duì)象很大并且需要多個(gè)步驟時(shí),使用構(gòu)建器模式,有助于減小構(gòu)造函數(shù)的大小。

如果你是寫過Java程序一定對(duì)下面這類代碼很熟悉。

 
 
 
  1. Coffee.builder().name("Latti").price("30").build() 

當(dāng)然,自己給Coffee類加上構(gòu)建模式,還是需要寫不少額外的代碼,不過Java里有一個(gè)lombok包,只要引入這個(gè)包再在實(shí)體類加上@Builder注解,就可以使用建造模式構(gòu)建對(duì)象啦。

 
 
 
  1. import lombok.Builder; 
  2.  
  3. @Builder 
  4. public class Coffee extends BaseEntity implements Serializable { 
  5.     private String name; 
  6.  
  7.     private Long price; 
  8.    
  9.     ...... 

那在Go里面要怎么實(shí)現(xiàn)Builder模式呢?仿照上面這個(gè)模式,我們可以這樣:

 
 
 
  1. package myserver 
  2. //使用一個(gè)builder類來做包裝 
  3. type ServerBuilder struct { 
  4.   Server 
  5.  
  6. func Builder () *ServerBuilder { 
  7.   sb := new(ServerBuilder) 
  8.   sb.Server.Addr = "127.0.0.1" 
  9.   sb.Server.Port = "1001" 
  10.   // Server其他成員的默認(rèn)值 
  11.   ...... 
  12.   return sb 
  13.  
  14. func (sb *ServerBuilder) Protocol(protocol string) *ServerBuilder { 
  15.   sb.Server.Protocol = protocol  
  16.   return sb 
  17.  
  18. func (sb *ServerBuilder) Addr(addr string) *ServerBuilder { 
  19.   sb.Server.Addr = addr 
  20.   return sb 
  21.  
  22. func (sb *ServerBuilder) Port(port string) *ServerBuilder { 
  23.   sb.Server.Port = port 
  24.   return sb 
  25.  
  26. func (sb *ServerBuilder) MaxConn( maxconn int) *ServerBuilder { 
  27.   sb.Server.MaxConns = maxconn 
  28.   return sb 
  29.  
  30. func (sb *ServerBuilder) TimeOut( timeout time.Duration) *ServerBuilder { 
  31.   sb.Server.Timeout = timeout 
  32.   return sb 
  33.  
  34.  
  35. func (sb *ServerBuilder) Build() (Server) { 
  36.   return  sb.Server 

接下來就可以使用構(gòu)建模式創(chuàng)造Server類型的對(duì)象了

 
 
 
  1. server := myserver.Builder(). 
  2.  Addr("127.0.0.1"). 
  3.  Port("11203"). 
  4.  MaxConn(50). 
  5.  Build() 

這么一來有沒有覺得確實(shí)比定義一個(gè)參數(shù)巨多的Server構(gòu)造函數(shù)要好一點(diǎn)呢?

參考鏈接

https://coolshell.cn/articles/21146.html


標(biāo)題名稱:Builder模式能用來解決什么問題?
網(wǎng)站URL:http://www.5511xx.com/article/dphejii.html