一. 什么是工廠模式?
工廠就是用來生產(chǎn)產(chǎn)品的,然而一個工廠不會僅僅生產(chǎn)一種產(chǎn)品,這樣工廠的作用就很明顯,進(jìn)去的是原材料,出來的是成品,至于怎么去生產(chǎn),加工流程是什么,不需要知道,只要輸送原材料,它便會身材出產(chǎn)品
二.為什么使用工廠模式?
在程序開發(fā)中,有時候我們不得不根據(jù)不同的場景,去創(chuàng)建不同的實體類,利用此種模式,我們可以充分的規(guī)劃我們的代碼,使得項目的層級結(jié)構(gòu)更加清晰,在什么樣的場景下,使用什么樣的實體
注意事項:作為一種創(chuàng)建類模式帕翻,在任何需要生成復(fù)雜對象的地方耕姊,都可以使用工廠方法模式妇垢。有一點需要注意的地方就是復(fù)雜對象適合使用工廠模式溶诞,而簡單對象鸟妙,特別是只需要通過 new 就可以完成創(chuàng)建的對象,無需使用工廠模式赋朦。如果使用工廠模式辉川,就需要引入一個工廠類,會增加系統(tǒng)的復(fù)雜度寒锚。(簡單來說:不要刻意的為了使用工廠模式,而去使用工廠模式開發(fā),使用工廠模式,僅僅是為了讓代碼邏輯根據(jù)清晰,如果完全可以 alloc 的事情,偏偏寫了幾個類來實現(xiàn),那么這樣做是得不償失的)
三.怎么使用工廠模式?
就拿電話簿里面添加新的聯(lián)系人這個頁面吧
這個頁面大概使用了兩種cell,(只依這個圖片上顯示的部分為例,當(dāng)然如果各位大神,有什么新的思路去做這個頁面也可以,我在此只是用這個頁面舉例)
可能大家會問頂部的姓氏,名字,公司,為什么不也用cell,因為我感覺使用headerView會好點(個人理解),當(dāng)然也要看需求
如下:
分別創(chuàng)建繼承BaseTBCell的兩個子類,TBCellStyleOne,TBCellStyleTwo,各自實現(xiàn)各自的布局樣式
工廠類中,實現(xiàn)兩種cell的創(chuàng)建方法
在tableView中根據(jù)具體的需求,創(chuàng)建不同的cell,并展示數(shù)據(jù)
最終效果:
相關(guān)參考:
百度:https://baike.baidu.com/item/工廠模式/9852061?fr=aladdin
菜鳥教程:http://www.runoob.com/design-pattern/factory-pattern.html
博客園:http://www.cnblogs.com/xiaofeixiang/p/5104547.html
其他:http://blog.chinaunix.net/uid-25958655-id-4243289.html
簡書:http://www.reibang.com/p/03519d5e47b6
其他設(shè)計模式入口:
享元模式:http://www.reibang.com/p/f9c53b9825e4
責(zé)任鏈模式:http://www.reibang.com/p/30475126694a
觀察者模式:http://www.reibang.com/p/a6a6e5a8e8bd