go語言設計模式之工廠模式 位元組教育

2021-09-25 11:59:23 字數 1506 閱讀 3200

工廠模式(factory pattern)是最常用的設計模式之一。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。在工廠模式中,建立物件時不會對客戶端暴露建立邏輯,並且時通過使用乙個共同的介面來執行新的建立的物件。

乙個呼叫者想建立乙個物件,只知道物件名稱就可以了;

擴充套件性高,如果想增加乙個產品,只要擴充套件乙個工廠類就可以;

遮蔽產品的具體實現,呼叫者只關心產品的介面;

每增加乙個產品時,都需要增加乙個具體類和物件實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的複雜度,同時也增加了系統具體類的依賴,這並不是什麼好事;

我們將建立乙個shape介面和實現shape介面的實體類。下一步時定義乙個工廠類shapefactory。factorypatterndemo,演示類使用shapefactory來獲取shape物件。它將向shapefactory傳遞資訊(circle/rectangle/square),一邊獲取它所需物件的型別。

//建立乙個藉口

type shape inte***ce

//實現介面的試題型別:矩形

type rectangle struct

func (this rectangle) draw()

//實現介面的試題型別:正方形

type square struct

func (this square) draw()

//實現介面的試題型別:圓形

type circle struct

func (this circle) draw()

//建立乙個工廠,生成基於給定資訊的實體類的物件

type shapefactory struct

//使用getshape方法獲取性轉型別的物件

func (this shapefactory) getshape(shapetype string) shape

if shapetype == "circle"

} else if shapetype == "rectancle"

} else if shapetype == "square"

} return nil

}func main()

factory.getshape("circle").draw()

factory.getshape("rectancle").draw()

factory.getshape("square").draw()

}

inside square::draw() method.

inside rectangle::draw() method.

inside square::draw() method.

go語言設計模式之命令模式 位元組教育

命令模式是將乙個請求封裝為乙個物件,從而使我們可用不同的請求對客戶進行引數化 對請求排隊或者記錄請求日誌,以及支援可撤銷的操作。命令模式是一種物件行為模式,其別名為動作模式或事務模式。乙個呼叫者想建立乙個物件,只知道物件名稱就可以了 擴充套件性高,如果想增加乙個產品,只要擴充套件乙個工廠類就可以 遮...

抽象工廠模式 Go語言設計模式 抽象工廠

想象一下你需要買包括運動鞋和運動服的運動套裝,大多數時候你想買同乙個工廠生產的一套運動套裝,比如nike套裝或adidas套裝。你想要的具體產品是成套的鞋子和短褲,這就是抽象工廠運用的場景,這些產品將由nike或adidas的抽象工廠建立。以下是工廠介面 以下是兩個產品介面 現在讓我們來看抽象工廠介...

go語言設計模式之單例模式 位元組教育

單例模式,是一種常用的軟體設計模式,在他的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項且該是例易於外界訪問,從而方便對例項個數的控制並節約系統資源。懶漢模式是開源專案中使用最多的一種,最大的缺點是分執行緒安全的。懶漢模式 type singleton stru...