綜述
抽象工廠模式提供乙個建立一系列相關或者相互依賴物件的介面
例如,美的空調,美的電冰箱,他們就都是美的工廠生產的,就是同一產品族
例如:美的空調,格力空調,都是空調,他們就是同一產品等級結構,都是空調所以根據產品等級結構和產品族可以唯一確定乙個產品。
業務場景
模型分析
umlgreefactory,mideafactory,haie***ctory這三個是具體的廠商,他們都可以生產自己品牌的冰箱和空調
firdge和其子類,以及airconditioner和其子類都是同一產品等級下面不同牌子的產品。
* 冰箱
*/public
abstract
class
fridge
protected
abstract
void
show()
;}
/**
* 空調
*/public
abstract
class
airconditioner
protected
abstract
void
show()
;}
/**
* 美的冰箱
* @author zhongyuan.zhao
* @date 2020-05-23 15:39
*/public
class
mideafridge
extends
fridge
@override
protected
void
show()
}
/**
* 美的空調
* @author zhongyuan.zhao
* @date 2020-05-23 21:36
*/public
class
mideaairconditioner
extends
airconditioner
@override
protected
void
show()
}
/**
* 格力冰箱
*/public
class
greefridge
extends
fridge
@override
protected
void
show()
}
/**
* 格力空調
*/public
class
greeairconditioner
extends
airconditioner
@override
protected
void
show()
}
/**
* 海爾冰箱
*/public
class
haierfridge
extends
fridge
@override
protected
void
show()
}
/**
* 海爾空調
*/public
class
haierairconditioner
extends
airconditioner
@override
protected
void
show()
}
/**
* 產品族工廠
*/public
inte***ce
ifactory
/**
* 美的工廠
*/public
class
mideafactory
implements
ifactory
@override
public airconditioner createairconditioner()
}
/**
* 海爾工廠
*/public
class
haie***ctory
implements
ifactory
@override
public airconditioner createairconditioner()
}
/**
* 格力工廠
*/public
class
greefactory
implements
ifactory
@override
public airconditioner createairconditioner()
}
/**
* 客戶端
* * @author zhongyuan.zhao
* @date 2020-05-23 15:49
*/public
class
maintest
// 預計列印結果應該是格力冰箱和格力空調
fridge.
show()
; airconditioner.
show();}}
再次細品工廠模式(工廠方法模式,抽象工廠模式),本質上,就是讓我們在**中不要有太多的重複的建立相同物件的操作,這種操作會讓我們的**中有大量的重複**(這是一種**壞味道),如果有這種相同物件頻繁建立的情況,可以考慮使用工廠模式進行優化。
一句話總結:工廠模式就是防止**中有太多重複建立相同物件的**!
第0章 無中生有
每個學計算機的同學都想寫乙個作業系統,每個學儲存的同學都想開發一款磁碟陣列。每當看到 作業系統 四個字我就衝動,那是大腦皮層的強烈反應,無奈能力不濟,繞了一大圈都沒入門。今年5月剛好沒啥正事,所以打算重整旗鼓,寫乙個非常簡單的os,想用來敲開 作業系統 這個大門。這個系列的文章只記錄開發過程的點滴經...
Go語言列舉 無中生有
go語言中沒有列舉這種資料型別的,但是可以使用const配合iota模式來實現,如果要為列舉新增方法的話還涉及到型別的定義,以及為新建型別新增方法。所以在開始介紹實現go語言的列舉實現之前,我們先來看看型別別名 在go1.9版本新增的功能,主要用於 公升級 遷移中型別的相容性問題 和型別定義的區別。...
無中生有 計算機視覺探奇
計算機視覺 computer vision,cv 是一門研究如何使機器 看 的科學。1963年來自mit的larry roberts發表的該領域第一篇博士 machine perception of three dimensional solids 標誌著cv作為一門新興人工智慧方向研究的開始。在發...