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();
}
}
簡略工場形式運用場景
長處:工場類是全部形式的症結.包括了需要的邏輯斷定,依據外界給定的信息,決議畢竟應當創立哪一個詳細類的對象.經由過程應用工場類,外界可以從直接創立詳細產物對象的為難局勢解脫出來,僅僅須要擔任“花費”對象便可以了。而不用管這些對象畢竟若何創立及若何組織的.明白了各自的職責和權力,有益於全部軟件系統構造的優化。
缺陷:因為工場類集中了一切實例的創立邏輯,違背了高內聚義務分派准繩,將全體創立邏輯集中到了一個工場類中;它所能創立的類只能是事前斟酌到的,假如須要添加新的類,則就須要轉變工場類了。當體系中的詳細產物類赓續增多時刻,能夠會湧現請求工場類依據分歧前提創立分歧實例的需求.這類對前提的斷定和對詳細產物類型的斷定交織在一路,很難防止模塊功效的舒展,對體系的保護和擴大異常晦氣;
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。