簡單工廠 工廠方法 抽象工廠 瞭解一下
阿新 • • 發佈:2018-12-16
簡單工廠:工廠可以建立同一系列的產品,產品的介面一致,但工廠就要根據引數進行判斷到底建立哪種產品(簡單工廠沒有子類,一般來說直接在工廠裡面通過列舉來建立例項)。
比如:麵館有洋蔥面,牛肉麵,雞蛋麵...你要吃哪種面,就要根據你的口味決定。
工廠方法:可以有多種工廠,工廠有共同的介面,一個工廠只能產生一種產品,比起簡單工廠,工廠方法不需要判斷,降低了耦合(定義建立物件的介面,而例項化由子類負責,並且只能例項化一種類)
比如:楊老闆有三個店鋪:只賣包子的包子鋪,只賣水的水吧,只賣咖啡的咖啡店
抽象工廠:可以產生多個系列的產品(涉及到產品族的概念:位於不同產品等級中,功能有關聯的產品組成的家族 )(定義建立物件的介面,定義所有的產品,而例項化由子類負責,產品能否建立全部由它決定)
比如:麥當勞老闆:可樂系統產品,漢堡系列產品,每種產品又有大中小三種
簡單工廠和工廠方法最大的區別是:工廠方法不在工廠類中進行邏輯判斷,系統可以為不同產品類提供不同的工廠,不同的工廠類產生不同的產品。(工廠方法便於增加新的產品)
工廠方法和抽象工廠最大的區別是:抽象工廠建立物件更加複雜,抽象工廠的意圖是:提供一個介面,可以建立多個產品族中的產品物件,比如NSNumber中的NSCFNumber和NSCFBoolean。(由於產品的建立都是抽象類決定的,所以增加新產品不便)