Go 设计模式--抽象工厂模式
抽象工厂模式(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()

三种工厂模式总结:
简单的工厂模式:利用参数来创建不同的产品
工厂模式:一个工厂,有多个车间(子工厂),通过实例化车间来创建产品对象
抽象工厂模式:将工厂抽象化,可以实例化多个厂家,每个厂家各自建造自己的产品

浙公网安备 33010602011771号