场景
老板:“设计一个让工厂生产产品的场景,现在目前有工厂A生产A跟工厂B生产B,未来可能还有C跟D,写代码吧”
你:“好的,工厂模式可以搞定”
方案
工厂跟产品都会随时间推移进行增加,所以我们可以用接口跟抽象类来描述工厂跟产品,通过具体的实现来表示每一个不同的工厂跟产品,这样我们的代码就可以无限扩展
实现
see:github
package main
import "fmt"
//工厂接口
type AbstractFactory interface {
Produce() AbstractProduct
}
//抽象产品
type AbstractProduct string
//工厂实现
type AFactory struct {
}
func (ptr *AFactory) Produce() AbstractProduct{
fmt.Println("工厂A开始生产产品A")
return AbstractProduct("产品A")//产品实现
}
type BFactory struct {
}
func (ptr *BFactory) Produce() AbstractProduct{
fmt.Println("工厂B开始生产产品B")
return AbstractProduct("产品B")
}
func main() {
fmt.Println("分别联系两个工厂A跟B生产产品A跟B")
fmt.Println("好的老板")
var factory AbstractFactory
factory=&AFactory{}
factory.Produce()
factory=&BFactory{}
factory.Produce()
}