2023-09-01
工厂方法模式
工厂方法模式(英语:Factory method pattern)是一种实现了"工厂"概念的面向对象设计模式。
就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题。
工厂方法模式的实质是"定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。"
对比简单工厂:简单工厂没有对工厂抽象,一个工厂生产不同产品;工厂方法对工厂进行抽象,不同工厂生产想通产品,但是做法等是不同的。
type FactoryInterface interface {
GenerateProduct(string) ProductInterface
}
type ProductInterface interface {
Create()
}
type FactoryOne struct {
}
func (f FactoryOne) GenerateProduct(t string) ProductInterface {
switch t {
case "man":
return ProductManOne{}
case "woman":
}
return nil
}
type ProductManOne struct {
}
func (p ProductManOne) Create() {
println("100元男装")
}
type FactoryTwo struct {
}
func (f FactoryTwo) GenerateProduct(t string) ProductInterface {
switch t {
case "man":
return ProductManTwo{}
case "woman":
}
return nil
}
type ProductManTwo struct {
}
func (p ProductManTwo) Create() {
println("200元男装")
}
使用
func TestFactoryMethod(t *testing.T) {
new(FactoryOne).GenerateProduct("man").Create()
new(FactoryTwo).GenerateProduct("man").Create()
}