簡介
今天我們先來講一下工廠模式:
1.工廠模式可以分為三種:
其中,工廠模式與簡單工廠模式並不屬於23種設計模式。
工廠模式:這裡我們以製造鞋子為例子,工廠中可以生產:nike lining adidas 三種鞋子:
我們先定義乙個鞋子的介面用於生產鞋子:
public inte***ce shoes
分別是三種鞋子製造過程:
public class adidas implements shoes
}
public class lining implements shoes
}
public class nike implements shoes
}
現在我們來建造乙個工廠,用來生產各種鞋子:
public class ******factory else if ("adidas".equals(shoe))else if("lining".equals(shoe))else
}}
我們來看客戶端 是怎麼樣得到自己想要的鞋子的:
public class test
}
簡單工廠模式有乙個問題就是,類的建立依賴工廠類,也就是說,如果想要拓展程式,必須對工廠類進行修改。假如增加其他品牌鞋子,工廠類需要修改,如何解決?就用到工廠方法模式,建立乙個工廠介面和建立多個工廠實現類,這樣一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的**。
來看一下工廠模式的栗子:
首先我們建造乙個通用的工廠:
public inte***ce factory
然後我們再與每乙個商品建立相應的更專一的工廠:
public class liningfactory implements factory
}public class nikefactory implements factory
}public class adidasfactory implements factory
}
在客戶端的時候,我們可以這麼來獲取自己想要的鞋子:
public class test2
}
這樣的話,在加乙個商品的時候,需要在建立相應的工廠,直接實現工廠的介面,factory中的原來的判斷,交給了客戶端去做判斷,不像簡單工廠一樣,將複雜的邏輯寫在上面。但是問題又來了,客戶端中的客戶根本就不知道你這個工廠中具體的有哪些產品,所以這裡我們可以在看下 抽象工廠模式。
這裡我們定義乙個抽象類,或者是乙個介面的抽象工廠:
public inte***ce abstractfactory
然後我們在寫出抽象工廠具體的實現:
public class shoesfactory implements abstractfactory
@override
public shoes createlining()
@override
public shoes createadidas()
}
這裡我們需要實現介面中的方法,在方法中來建立某鞋子,我們在來看一下客戶端是怎樣的:
public class abstractfactorytest
}lining
nike
adidas
由此可以看出,我們如果在加入某一種品牌的鞋子,只需要將該鞋子建立相應的該品牌的工廠來實現所有工廠的介面,在介面實現類中來對鞋子進行生產,而客戶端也不需要關係你這個工廠是怎麼運作的,怎麼生產鞋子的,只需要new乙個工廠,看一下工廠中具體生產哪一類鞋子就可以了,也不需要知道該工廠能夠生產些什麼鞋子,所有的鞋子都擺在了面前,如果有需要就直接在工廠中拿就可以了。
總結歸納:
工廠模式能夠很好的讓我們 簡化**,減少**的耦合度,在spring中的 beanfactory定義了乙個
object getbean;的介面,就是利用了工廠模式來獲取建立bean物件,無論是簡單工廠模式,工廠方法模式,還是抽象工廠模式,他們都屬於工廠模式,在形式和特點上也是極為相似的,他們的最終目的都是為了解耦。在使用時,我們不必去在意這個模式到底工廠方法模式還是抽象工廠模式,因為他們之間的演變常常是令人琢磨不透的。經常你會發現,明明使用的工廠方法模式,當新需求來臨,稍加修改,加入了乙個新方法後,由於類中的產品構成了不同等級結構中的產品族,它就變成抽象工廠模式了;而對於抽象工廠模式,當減少乙個方法使的提供的產品不再構成產品族之後,它就演變成了工廠方法模式。
所以之後我們在開發過程中,可以根據類似的使用場景來選擇用工廠模式,減少**與業務的耦合度。
設計模式 設計模式之工廠模式
工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...
c 設計模式 之 工廠模式之 工廠模式
1 uml類圖 實現和依賴關係 實現 sportfactory jeepfactory hatchbackfactory 實現 ifactory 介面 sportcar jeepcar hatchbackcar 實現 icar 介面 依賴 ifactory 依賴 icar sportfactory ...
設計模式 工廠模式之簡單工廠模式
定義 由乙個工廠物件 工廠類 來指定建立某乙個產品類的例項。使用場景 客戶端只需傳入指定的引數即可,工廠類負責建立的物件較少 因為指定了傳入的引數 介面類 本想用iphone命名的,見諒 public inte ce phone實現介面類 public class huaweiphone imple...