抽象工厂(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

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