Java面向物件程式設計——工廠設計模式(Factory)
阿新 • • 發佈:2020-12-29
技術標籤: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方法中的內容。