工厂方法模式

package factory

import "design/desp/models"

// 工厂方法模式

const (
	ProductTechBook = iota
	ProductDailyBriefs
)

type ProductType int

type IProductFactory interface {
	CreateProduct(t ProductType) IProduct
}

type IProduct interface {
	GetInfo() string
}

type TechFactory struct{}

func (*TechFactory) CreateProduct(t ProductType) IProduct {
	switch t {
	case ProductTechBook:
		return &models.Book{}
	}
	return nil
}

type DailyFactory struct{}

func (*DailyFactory) CreateProduct(t ProductType) IProduct {
	switch t {
	case ProductDailyBriefs:
		return &models.Briefs{}
	}
	return nil
}

最后更新于