用簡單的語言解釋一下什么叫工廠方法? 到底有什么用?
A
每個月1號是happy家慶祝的日子,因為是happy father發工資的日子.
happy father:"今天飯真香."
happy mother:"肉多就香,兒子這50塊是你這個月的零花錢!"
happy father:"記住不許去網吧,那地方總著火!"
情景解釋:happy mother把零花錢給兒子,至于他怎么花,什么時候花買什么東西有兒子做主.
B
LZ 有時候吃 康師傅方便面,統一方便面,.... 但吃的時候都要自己去煮
我給LZ做了臺機器叫煮方便面機,LZ把這些方便面放里面,想吃康師傅按1,想吃統一按2....
自動給LZ煮好出來了
C
請MM去麥當勞吃漢堡,不同的MM有不同的口味,要每個都記住是一件煩人的事情,我一般采用Factory Method模式,帶著MM到服務員那兒,說“要一個漢堡”,具體要什么樣的漢堡呢,讓MM直接跟服務員說就行了。
D
這么籠統的說讓一個其他對象代替你干事情,好像所有的模式都是干這個事情的,應該把范圍限制一下:
主要是用在創建實例的時候使用,比如你在客戶端,有一個接口要你調用,有很多類實現了這個接口,你想使用這個接口的時候必須指明new 的是哪一個類 ,就是 接口 I = new 類名。這個時候問題來了,你根本就不知道類名,或者你不想在你的這個里面直接指定類名,這個時候,如果有一個專門生成實例的工廠有多好啊,你向它提出要求生成的實例,然后他給你返回對象的實例。這樣客戶端和具體類之間耦合性減低,內聚性增強。
E
打個比方,你是一個初創IT公司的CEO,公司目前處于不斷的發展階段,需要不停的招各方面的人才,如程序員,系統設計師,后勤人員,管理人員,財務人員,你開始的做法是你親自干這件事情,你不停的擬定標準,然后和人員面試,決定選人。哪天,你突然意識到你可以制定一個人去專門干這件事情,而你可以騰出更多的精力考慮公司的發展,于是你指定了一個HR經理,此后,你需要哪方面的人,你不再需要做這方面的事情,你可以叫來HR經理,告訴他你要一個“財務人員”,并告訴一些基本要求,然后HR經理會幫你選定符合標準的人才。這個例子中的HR經理就是工廠模式。
我覺得有些模式你看不懂是正常的,但是如果你在寫程序的時候認真思考一些問題,你會觸類旁通的。一個人寫的程序的過程與一個公司的發展我覺得一定程度上是類似的,一開始,你的程序或者你的公司處于起步階段,啥事情都需要你總經理做,啥功能都需要你一行行寫,隨著經驗的提高,你會覺得一些重復寫的功能我可以把他封裝一下,避免重復CODING,我還可以把他寫的更靈活,適應于各種情況,這就是模式,對于公司,一樣,等到公司發展到一定程度,各個職能的部門都建立起來了,負責各自職能的一塊,你作為總經理會覺得輕松了許多,也會有更多的時間關注在公司發展上面了。