新聞中心
建造模式,也有翻譯成生成器模式的,大家看到后知道他們是一個(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ì)下面這類代碼很熟悉。
- Coffee.builder().name("Latti").price("30").build()
當(dāng)然,自己給Coffee類加上構(gòu)建模式,還是需要寫不少額外的代碼,不過Java里有一個(gè)lombok包,只要引入這個(gè)包再在實(shí)體類加上@Builder注解,就可以使用建造模式構(gòu)建對(duì)象啦。
- import lombok.Builder;
- @Builder
- public class Coffee extends BaseEntity implements Serializable {
- private String name;
- private Long price;
- ......
- }
那在Go里面要怎么實(shí)現(xiàn)Builder模式呢?仿照上面這個(gè)模式,我們可以這樣:
- package myserver
- //使用一個(gè)builder類來做包裝
- type ServerBuilder struct {
- Server
- }
- func Builder () *ServerBuilder {
- sb := new(ServerBuilder)
- sb.Server.Addr = "127.0.0.1"
- sb.Server.Port = "1001"
- // Server其他成員的默認(rèn)值
- ......
- return sb
- }
- func (sb *ServerBuilder) Protocol(protocol string) *ServerBuilder {
- sb.Server.Protocol = protocol
- return sb
- }
- func (sb *ServerBuilder) Addr(addr string) *ServerBuilder {
- sb.Server.Addr = addr
- return sb
- }
- func (sb *ServerBuilder) Port(port string) *ServerBuilder {
- sb.Server.Port = port
- return sb
- }
- func (sb *ServerBuilder) MaxConn( maxconn int) *ServerBuilder {
- sb.Server.MaxConns = maxconn
- return sb
- }
- func (sb *ServerBuilder) TimeOut( timeout time.Duration) *ServerBuilder {
- sb.Server.Timeout = timeout
- return sb
- }
- func (sb *ServerBuilder) Build() (Server) {
- return sb.Server
- }
接下來就可以使用構(gòu)建模式創(chuàng)造Server類型的對(duì)象了
- server := myserver.Builder().
- Addr("127.0.0.1").
- Port("11203").
- MaxConn(50).
- 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


咨詢
建站咨詢
