java設計形式之簡略工場形式簡述。本站提示廣大學習愛好者:(java設計形式之簡略工場形式簡述)文章只能為提供參考,不一定能成為您想要的結果。以下是java設計形式之簡略工場形式簡述正文
簡略工場形式的概念
就是樹立一個工場類,對完成了統一接口的一些類停止實例的創立。簡略工場形式的本質是由一個工場類依據傳入的參數,靜態決議應當創立哪個產物類(這些產物類繼續自一個父類或接口)的實例。
簡略工場形式的UML圖
簡略工場形式代碼
進修簡略工場形式的時刻我用的是一個與人類有相干的例子。人類活著界分為漢子和女人,起首界說一個Human產物的籠統接口
/** * This is factory patter package */ package com.roc.factory; /** * 產物的籠統接口 人類 * @author liaowp * */ public interface Human { public void say(); }
然後界說漢子和女人,異樣都有措辭的辦法。
/** * This is factory patter package */ package com.roc.factory; /** * man 漢子 * @author liaowp * */ public class Man implements Human { /* say method * @see com.roc.factory.Human#say() */ @Override public void say() { System.out.println("漢子"); } }
/** * This is factory patter package */ package com.roc.factory; /**女人 * @author liaowp * */ public class Woman implements Human { /* say method * @see com.roc.factory.Human#say() */ @Override public void say() { System.out.println("女人"); } }
最初寫一個工場類,用來發明漢子和女人。第一種方法是應用邏輯斷定的方法完成的。
package com.roc.factory; /** * 簡略工場 * @author liaowp * */ public class SampleFactory { public static Human makeHuman(String type){ if(type.equals("man")){ Human man = new Man(); return man; }else if(type.equals("womman")){ Human woman = new Woman(); return woman; }else{ System.out.println("臨盆不出來"); return null; } } }
第二方法是應用java的放射完成的,我認為這一類的完成方法比擬好。
package com.roc.factory; /** * 簡略工場放射完成 * @author liaowp * */ public class SampleFactory1 { public static Human makeHuman(Class c){ Human human = null; try { human = (Human) Class.forName(c.getName()).newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block System.out.println("不支撐籠統類或接口"); e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("沒有足夠權限,即不克不及拜訪公有對象"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block System.out.println("類不存在"); e.printStackTrace(); } return human; } }
最初是客戶真個代碼
package com.roc.factory; /** * 簡略工場測試 * @author liaowp * */ public class Client { public static void main(String[] args) { // Human man = SampleFactory.makeHuman("man"); // man.say(); // Human womman = SampleFactory.makeHuman("womman"); // womman.say(); // Human test = SampleFactory.makeHuman("tttt"); Human man = SampleFactory1.makeHuman(Man.class); man.say(); Human woman = SampleFactory1.makeHuman(Woman.class); woman.say(); } }
簡略工場形式運用場景
長處:工場類是全部形式的症結.包括了需要的邏輯斷定,依據外界給定的信息,決議畢竟應當創立哪一個詳細類的對象.經由過程應用工場類,外界可以從直接創立詳細產物對象的為難局勢解脫出來,僅僅須要擔任“花費”對象便可以了。而不用管這些對象畢竟若何創立及若何組織的.明白了各自的職責和權力,有益於全部軟件系統構造的優化。
缺陷:因為工場類集中了一切實例的創立邏輯,違背了高內聚義務分派准繩,將全體創立邏輯集中到了一個工場類中;它所能創立的類只能是事前斟酌到的,假如須要添加新的類,則就須要轉變工場類了。當體系中的詳細產物類赓續增多時刻,能夠會湧現請求工場類依據分歧前提創立分歧實例的需求.這類對前提的斷定和對詳細產物類型的斷定交織在一路,很難防止模塊功效的舒展,對體系的保護和擴大異常晦氣;
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。