一. 什么是工廠模式?
工廠就是用來生產產品的,然而一個工廠不會僅僅生產一種產品,這樣工廠的作用就很明顯,進去的是原材料,出來的是成品,至于怎么去生產,加工流程是什么,不需要知道,只要輸送原材料,它便會身材出產品
二.為什么使用工廠模式?
在程序開發中,有時候我們不得不根據不同的場景,去創建不同的實體類,利用此種模式,我們可以充分的規劃我們的代碼,使得項目的層級結構更加清晰,在什么樣的場景下,使用什么樣的實體
注意事項:作為一種創建類模式,在任何需要生成復雜對象的地方,都可以使用工廠方法模式。有一點需要注意的地方就是復雜對象適合使用工廠模式,而簡單對象,特別是只需要通過 new 就可以完成創建的對象,無需使用工廠模式。如果使用工廠模式,就需要引入一個工廠類,會增加系統的復雜度。(簡單來說:不要刻意的為了使用工廠模式,而去使用工廠模式開發,使用工廠模式,僅僅是為了讓代碼邏輯根據清晰,如果完全可以 alloc 的事情,偏偏寫了幾個類來實現,那么這樣做是得不償失的)
三.怎么使用工廠模式?
就拿電話簿里面添加新的聯系人這個頁面吧
這個頁面大概使用了兩種cell,(只依這個圖片上顯示的部分為例,當然如果各位大神,有什么新的思路去做這個頁面也可以,我在此只是用這個頁面舉例)
可能大家會問頂部的姓氏,名字,公司,為什么不也用cell,因為我感覺使用headerView會好點(個人理解),當然也要看需求
如下:
分別創建繼承BaseTBCell的兩個子類,TBCellStyleOne,TBCellStyleTwo,各自實現各自的布局樣式
工廠類中,實現兩種cell的創建方法
在tableView中根據具體的需求,創建不同的cell,并展示數據
最終效果:
相關參考:
百度: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.lxweimin.com/p/03519d5e47b6
其他設計模式入口:
享元模式:http://www.lxweimin.com/p/f9c53b9825e4
責任鏈模式:http://www.lxweimin.com/p/30475126694a
觀察者模式:http://www.lxweimin.com/p/a6a6e5a8e8bd