java 簡單工廠 設計模式
阿新 • • 發佈:2018-12-18
簡單工廠模式是由一個物件決定創建出哪一種產品的例項。簡單工廠模式是工廠模式家族中最簡單隻用的模式。
檢視下面的程式碼有何不妥之處 我先定義一個生產的介面, 然後我在用一個手機類去實現這個介面, 最後,我例項化一個物件來使用手機工作。
package factory;
public class Person {
public static void main(String[] args) {
IProduct phone= new Phone();
phone.work(); //結果: 手機開始工作了...
}
}
// 建立一個工廠 介面
interface IProduct {
public void work();
}
// 工廠生產了手機
class Phone implements IProduct{
public void work() {
System.out.println("手機開始工作了....");
}
}
通過上面的程式碼可以看出 , 如果手機類改變,或者出錯,對使用者類會產生很大的影響,甚至會使程式無法正確執行。這就是兩個類耦合了,產生了依賴,當被使用者發生改變了,會影響到使用者,為了解決這個問題,或者較低兩者之間的依賴,我們需要使用簡單工廠設計模式。
我們只需要新建一個工廠類,把依賴關係轉移一下即可。
程式碼例項:
- 介面
interface IProduct{
public void work();
}
- 產品
class Phone implements IProduct{
public void work() {
System.out.println("手機開始工作了....");
}
}
class Computer implements IProduct{
public void work() {
System.out.println("電腦開始工作了....");
}
}
- 建立一個工廠類,把使用者和產品的依賴關係轉移 ****
class ProductFactory{
// 使用了靜態方法,方便用類名直接呼叫
public static IProduct getProduct(String name) {
if("phone".equals(name)) {
return new Phone();
}else if("computer".equals(name)) {
return new Computer();
}else {
return null;
}
}
}
- 使用者類測試
public class Person {
public static void main(String[] args) {
// IProduct phone = new Phone();
// phone.work();
IProduct phone = ProductFactory.getProduct("phone");
if(null!=phone) {
phone.work();
}
IProduct computer = ProductFactory.getProduct("computer");
if(null!=computer) {
computer.work();
}
}
}
結果:
通過簡單工廠設計模式可以看出,即使手機類出錯,也不會影響到使用者類的正常執行,降低了兩者的依賴關係。