成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Builder模式能用來解決什么問題?

開發 前端
建造模式,也有翻譯成生成器模式的,大家看到后知道他們是一個東西,都是Builer Pattern翻譯過來的就行。它是一種對象構建模式,是將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。

[[429286]]

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

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

  • 當要構建的對象很大并且需要多個步驟時,使用構建器模式,有助于減小構造函數的大小。

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

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

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

  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里面要怎么實現Builder模式呢?仿照上面這個模式,我們可以這樣:

  1. package myserver 
  2. //使用一個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其他成員的默認值 
  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 

接下來就可以使用構建模式創造Server類型的對象了

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

這么一來有沒有覺得確實比定義一個參數巨多的Server構造函數要好一點呢?

參考鏈接

 

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

 

責任編輯:武曉燕 來源: 網管叨bi叨
相關推薦

2021-07-16 06:56:50

邊緣計算分布式

2020-06-15 08:06:25

ES數據

2019-04-26 13:01:16

ServiceMesh微服務架構

2024-12-09 09:30:00

適配器模式設計模式代碼

2022-04-04 07:51:32

Web框架

2020-05-22 10:02:43

Python語言編程

2024-12-27 15:28:01

CQRS架構方式

2021-05-11 10:56:07

DevOps開發工具

2011-11-30 15:28:32

在線協作系統

2024-11-04 10:28:08

2012-09-19 09:45:16

移動互聯網廣告模式

2022-06-29 07:49:42

云存儲架構DevOps

2023-11-08 14:03:47

數據可視化數字化轉型

2014-09-28 10:28:59

Docker云計算

2020-11-02 13:25:45

Redis數據庫開源

2024-11-05 08:16:04

HTTP/3HTTP 2.0QUIC

2023-05-31 07:32:37

2022-03-30 08:08:30

數字孿生制造業

2009-08-04 17:27:18

Actor模型

2025-01-10 09:13:36

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区四区毛片 | 高清亚洲 | 91毛片在线看 | 国产成人99久久亚洲综合精品 | 亚洲国产自产 | 刘亦菲国产毛片bd | 国产精品av久久久久久久久久 | 亚洲精品一区二区三区中文字幕 | www.蜜桃av | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 午夜影院网站 | 成人在线视频免费播放 | 91看片在线 | 在线中文字幕视频 | 超碰在线人人 | 久久亚洲国产精品 | av一级在线观看 | 国产精品一区二区欧美 | 视频一区在线播放 | 亚洲高清三级 | 日韩免费一区二区 | 亚洲网站在线播放 | 国产一区免费 | 日韩av在线一区二区 | 国产一区在线免费 | 亚洲日韩欧美一区二区在线 | 日韩有码在线播放 | 久久精品国产一区二区电影 | 日韩91 | 久久不卡 | 欧美一级免费 | 一区二区三区中文 | 久久乐国产精品 | 国产成人精品亚洲日本在线观看 | 免费色网址 | 日本小电影网站 | 在线免费黄色小视频 | 成人精品在线观看 | 日韩有码一区 | 欧美在线国产精品 | 日韩网站免费观看 |