1. 程式人生 > 其它 >Java面向物件程式設計——工廠設計模式(Factory)

Java面向物件程式設計——工廠設計模式(Factory)

技術標籤:Java面向物件程式設計設計模式程式語言jvmjava

觀察如下程式(主要觀察Main方法):

interface IPerson//定義一個人的標準
{
	public abstract void think();//思考
	public abstract void learn();//學習
}
class Man implements IPerson
{
	public void think()//思考
	{
		System.out.println("思考怎麼賺錢");
	}
	public void learn()//學習
	{
		System.out.println("適度學習新知識");
	}
}
class Child implements IPerson
{
	public void think()//思考
	{
		System.out.println("思考怎麼玩");
	}
	public void learn()//學習
	{
		System.out.println("主要任務就是學習");
	}
}
public class Demo{
	public static void main(String args[]){
		IPerson per=new Man();
		per.think();
		IPerson per1=new Child();
		per1.think();
	}
}

對於main方法要明確的知道是Man還是Child,它才能知道這個是Man的思考還是Child的思考,而往往在開發中,這個是不確定的,或者說main方法並不在乎是誰在思考。於是就造成了耦合的問題,而耦合的元凶就是“new”這個關鍵字。

我們知道,Java之所以可以實現跨平臺執行,關鍵就在於JVM,而JVM的核心原理就是利用一個虛擬機器來執行Java程式,所有的程式並不與作業系統相關聯,而是由我們的JVM來匹配。因此良好的設計應避免耦合,於是工廠設計模式誕生。

修改上面的程式如下(args[0]表示可以傳入一個引數):

class Factory
{
	public static IPerson getInstance(String person_name)
	{
		if("Man".equals(person_name))
			return new Man();
		else if("Child".equals(person_name))
			return new Child();
		else 
			return null;
	}
}
public class Demo{
	public static void main(String args[]){
		IPerson per=Factory.getInstance(args[0]);
		per.think();
	}
}

輸入引數和執行結果:

因此工廠設計模式是非常實用的,及時以後需要擴充也不需要修改Main方法中的內容。