1. 程式人生 > >java 簡單工廠 設計模式

java 簡單工廠 設計模式

     簡單工廠模式是由一個物件決定創建出哪一種產品的例項。簡單工廠模式是工廠模式家族中最簡單隻用的模式。

檢視下面的程式碼有何不妥之處 我先定義一個生產的介面, 然後我在用一個手機類去實現這個介面, 最後,我例項化一個物件來使用手機工作。

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("手機開始工作了...."); } }

    通過上面的程式碼可以看出 , 如果手機類改變,或者出錯,對使用者類會產生很大的影響,甚至會使程式無法正確執行。這就是兩個類耦合了,產生了依賴,當被使用者發生改變了,會影響到使用者,為了解決這個問題,或者較低兩者之間的依賴,我們需要使用簡單工廠設計模式。

我們只需要新建一個工廠類,把依賴關係轉移一下即可。

程式碼例項:

  1. 介面
interface IProduct{
	public void work();
}
  1. 產品
class Phone implements IProduct{
	public void work() {
		System.out.println("手機開始工作了....");
	}
}
class Computer implements IProduct{
	public void work() {
		System.out.println("電腦開始工作了....");
	}
}
  1. 建立一個工廠類,把使用者和產品的依賴關係轉移 ****
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; } } }
  1. 使用者類測試
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();
		}
		
	}
}

結果: 在這裡插入圖片描述

通過簡單工廠設計模式可以看出,即使手機類出錯,也不會影響到使用者類的正常執行,降低了兩者的依賴關係。