天天看点

抽象工厂(AbstractFactory)——go实现抽象工厂模式

1. 意图

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

2. 结构

抽象工厂(AbstractFactory)——go实现抽象工厂模式

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

继续阅读