工廠模式
定義
創建對象的接口,讓其子類自己決定實例化哪個類,工廠模式使其創建過程延遲到子類進行。
角色
1.產品抽象接口
2.工廠創建產品方法
3.產品實例
例子
選銀行借錢的例子,資質方法根據你的收入等其他情況給你選擇銀行。
//抽象產品接口
type Bank interface {
BorrowMoney()
}
//具體銀行產品實例
type BjBank struct{
}
func (b *BjBank)BorrowMoney(){
fmt.Println("bj bank borrow money")
}
type ZsBank struct{
}
func (z *ZsBank)BorrowMoney(){
fmt.Println("zs bank borrow money")
}
//工廠創建產品方法
func GetBank(incomeMoney int64)Bank{
if incomeMoney > 10{
return &BjBank{}
}else if incomeMoney >100{
return &ZsBank{}
}
return nil
}
func main(){
//向資質工廠獲取可以借錢的銀行對象
b := GetBank(20)
//借錢
b.BorrowMoney()
b := GetBank(200)
b.BorrowMoney()
}
總結
抽象一個類(interface),多個struct 實現了這個抽象,這個時候我們可以對這個抽象類實現一個工廠方法,這個工廠方法專門來根據一些不確定條件來創建這個抽象類的實體類。