抽象方法设计
抽象工厂提供了一些列相关活相互依赖对象的接口, 而无需指定他们具体的类, 具体的工厂负责实现具体的产品实例.
用一组抽象的对象创建产品, 而不需要关心内部做了什么处理.
抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构,
一个工厂等级结构可以负责多个不同产品等级结构中的产品对象的创建 。当一个工厂等级结构可以创建出分属于不同产品等级结构的一个
产品族中的所有对象时,抽象工厂模式比工厂方法模式更为简单、有效率。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| type Factory interface { CreateProduct() Product }
type Product interface { Describe() }
type ConcreteProduct struct { Name string }
func (conproduct *ConcreteProduct) Describe() { fmt.Println(conproduct.Name) }
type ConCreteFactory struct {}
func (confactory *ConCreteFactory) CreateProduct() Product { return &ConcreteProduct{Name: "KG"} }
|