抽象工廠(AbstractFactory)——go實現抽象工廠模式

1. 意圖

提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。

2. 結構

在這裏插入圖片描述

3. 5種參與者

  1. 抽象工廠類(AbstractFactory)
    聲明一個創建抽象產品對象的操作接口

  2. 具體工廠類(ConcreteFactory)
    實現創建具體產品對象的操作

  3. 抽象產品類(AbstractPoduct)
    爲一類產品聲明一個接口

  4. 具體產品類(ConcreteProduct)
    定義一個將被相應的具體工廠創建的產品對象
    實現AbstractPoduct接口

  5. Client
    僅使用由AbstractFactory和AbstractProduct類聲明的接口

4. go代碼實現

package main

import "fmt"

// 抽象產品類--爲一類產品聲明一個接口
type AbstractProduct interface {
	SaveProduct()
}

// 抽象工廠類--聲明一個創建抽象產品對象的操作接口
type AbstractFactory interface {
	CreateAbstractProduct() AbstractProduct
}

// 具體產品類--定義一個將被相應的具體工廠創建的產品對象
type ConcreteProduct struct{}

func (*ConcreteProduct) SaveProduct() { // 實現AbstractPoduct接口
	fmt.Println("Product is created")
}

// 具體工廠類--實現創建具體產品對象的操作
type ConcreteFactory struct{}

func (*ConcreteFactory) CreateConcreteProduct() AbstractProduct {
	return &ConcreteProduct{}
}

[參考文檔1]《設計模式》-機械工業出版社
3.1節 ABSTRACT FACTORY(抽象工廠)——對象創建型模式
參考文檔2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章