抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。
实现举例:
package absfactory import( "fmt" ) //手机制作接口 type SellPhone interface{ Call()//打电话 } //ipad制作接口 type Ipad interface{ Play()//玩游戏 } //会制作ipad的工厂 type Factory interface{ CreateSellPhone() SellPhone CreateIpad() Ipad } //小米公司 type Xiaomi struct { } //小米手机的模型 type XiaomiPhone struct{ } //小米手机的打电话功能 func (this *XiaomiPhone)Call(){ fmt.Println("用小米手机打电话") } //小米ipad的模型 type XiaomiIpad struct{ } //小米手机的打电话功能 func (this *XiaomiIpad)Play(){ fmt.Println("用小米Ipad玩游戏") } func (this *Xiaomi)CreateSellPhone() SellPhone{ return &XiaomiPhone{} } func (this *Xiaomi)CreateIpad() Ipad{ return &XiaomiIpad{} } //华为公司,也可以制造手机ipad type Huawei struct{ } //华为手机 type HuaweiPhone struct{ } //华为公司制造华为手机 func (this *Huawei)CreateSellPhone() SellPhone{ return &HuaweiPhone{} } func (this *HuaweiPhone)Call(){ fmt.Println("用华为手机打电话") } type HuaweiIpad struct{ } func (this *Huawei)CreateIpad() Ipad{ return &HuaweiIpad{} } func (this *HuaweiIpad)Play(){ fmt.Println("用华为Ipad玩游戏") }
//小米制造手机打电话,制造ipad玩游戏 xm := absfactory.Xiaomi{} xm.CreateSellPhone().Call() xm.CreateIpad().Play() hw := absfactory.Huawei{} hw.CreateSellPhone().Call() hw.CreateIpad().Play()
三种工厂模式总结:
简单的工厂模式:利用参数来创建不同的产品
工厂模式:一个工厂,有多个车间(子工厂),通过实例化车间来创建产品对象
抽象工厂模式:将工厂抽象化,可以实例化多个厂家,每个厂家各自建造自己的产品
请发表评论