在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

Java Q&A: 運用Factory Method模式(轉)

Java Q&A: 運用Factory Method模式(轉)

更新時間:2021-11-16 文章作者:未知 信息來源:網絡 閱讀次數:

Java Q&A: 使用Factory Method模式

Q: 閱讀 "Polymorphism in its purest form" 一文時,我看到了一個不熟悉的術語 "Factory method"。你能解釋一下什么是Factory method并說明如何使用它嗎?

A: Factory method(工廠方法)只不過是實例化對象的一種方法的名稱。就象工廠一樣,Factory method的任務是創建--或制造--對象。

讓我們看一個例子。

每個程序要有一種報錯的方式。看看下面的接口:

代碼清單1
public interface Trace {

// turn on and off debugging
public void setDebug( boolean debug );

// write out a debug message
public void debug( String message );

// write out an error message
public void error( String message );

}

假設寫了兩個實現。一個實現(代碼清單3)將信息寫到命令行,另一個(代碼清單2)則寫到文件中。

代碼清單2
public class FileTrace implements Trace {

private java.io.PrintWriter pw;
private boolean debug;

public FileTrace() throws java.io.IOException {
// a real FileTrace would need to obtain the filename somewhere
// for the example I'll hardcode it
pw = new java.io.PrintWriter( new java.io.FileWriter( "c:\trace.log" ) );
}

public void setDebug( boolean debug ) {
this.debug = debug;
}

public void debug( String message ) {
if( debug ) {// only print if debug is true
pw.println( "DEBUG: " + message );
pw.flush();
}
}
public void error( String message ) {
// always print out errors
pw.println( "ERROR: " + message );
pw.flush();
}

}

代碼清單3
public class SystemTrace implements Trace {

private boolean debug;

public void setDebug( boolean debug ) {
this.debug = debug;
}

public void debug( String message ) {
if( debug ) {// only print if debug is true
System.out.println( "DEBUG: " + message );
}
}
public void error( String message ) {
// always print out errors
System.out.println( "ERROR: " + message );
}

}

要使用這兩個類中的任一個,需要這樣做:

代碼清單4
//... some code ...
SystemTrace log = new SystemTrace();
//... code ...
log.debug( "entering loog" );
// ... etc ...

現在,如果想改變程序中用到的 "Trace實現",就需要修改實例化 "Trace實現" 的每個類。使用了Trace的類的數量可能很多,這種修改就需要大量的工作。而且,你一定也想盡可能地避免大量修改你的類。

代碼清單5
public class TraceFactory {
public static Trace getTrace() {
return new SystemTrace();
}
}

getTrace()是一個Factory method。這樣,無論什么時候你想得到一個Trace的引用,只用簡單地調用TraceFactory.getTrace():

代碼清單6
//... some code ...
Trace log = new TraceFactory.getTrace();
//... code ...
log.debug( "entering loog" );
// ... etc ...

使用Factory method來獲得實例可以大量節省以后的工作。上面的代碼中,TraceFactory返回的是SystemTrace實例。假設需求發生了變化,需要將信息寫到文件中。如果是使用Factory method來獲得實例,只用在一個類中修改一次就可以滿足新的需求。你就不用在使用了Trace的的每個類中進行修改了。也就是說,只用簡單地重定義getTrace():

代碼清單7
public class TraceFactory {
public static Trace getTrace() {
try {
return new FileTrace();
} catch ( java.io.IOException ex ) {
Trace t = new SystemTrace();
t.error( "could not instantiate FileTrace: " + ex.getMessage() );
return t;
}
}
}

當不能確定一個類的什么具體實現要被實例化時,Factory method會很有用。你可以將那些細節留給Factory method。

在上面的例子中,你的程序不知道要創建FileTrace還是SystemTrace。因而,你可以只是用Trace來處理對象,對具體實現的實例化則留給Factory method。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 黄色录像特级片| 潘金莲一级淫片aaaaaa播放1| 欧美h视频在线观看| 黄色国产小视频| 性欧美大战久久久久久久| 浴室偷拍美女洗澡456在线| 亚洲免费av一区| 性生生活大片免费看视频| 一道本视频在线观看| 奇米影视四色在线| 日本国产一级片| 久久av秘一区二区三区| 中文字幕第66页| 91看片淫黄大片91| 777久久精品一区二区三区无码| 三级网在线观看| 国产 国语对白 露脸| 97超碰在线视| 午夜精品久久久久久久无码| 日本a视频在线观看| 男女曰b免费视频| 亚洲黄色小视频在线观看| 亚洲欧洲日本精品| ijzzijzzij亚洲大全| 国产一级片91| 一本大道熟女人妻中文字幕在线| 欧美牲交a欧美牲交aⅴ免费下载| 搡女人真爽免费午夜网站| 色播五月综合网| 成人短视频在线观看免费| 日本免费黄视频| 特级黄色片视频| 无码人妻精品一区二区三区在线| 91精品无人成人www| 精品国产一区二区三区在线| 日批视频在线免费看| 超碰超碰在线观看| 僵尸世界大战2 在线播放| www亚洲成人| 日韩在线综合网| 日韩精品视频网址| 国产精品免费成人| 国产一二三四区在线观看| 欧洲熟妇精品视频| 黑人巨茎大战欧美白妇| 精品少妇人妻av一区二区| 最近中文字幕一区二区| 不卡中文字幕在线观看| 日韩网址在线观看| 欧美又黄又嫩大片a级| 日韩中文字幕亚洲精品欧美| 国产精品va无码一区二区| 91亚洲免费视频| 日本一道在线观看| 欧美视频第一区| 亚洲a级黄色片| 自拍日韩亚洲一区在线| 久久久久久香蕉| 夫妻免费无码v看片| 91插插插影院| 成人亚洲视频在线观看| 蜜桃视频一区二区在线观看| 色诱视频在线观看| japanese在线播放| 一本色道久久亚洲综合精品蜜桃 | 亚洲黄色a v| 爱豆国产剧免费观看大全剧苏畅| 国内外成人免费激情视频| 免费观看黄色的网站| 日日摸天天爽天天爽视频| 国内少妇毛片视频| 91国内在线播放| 农村妇女精品一二区| www.在线观看av| 色黄视频免费看| 中文字幕在线观看日| 99热这里只有精品在线播放| 国产欧美日韩网站| 大伊香蕉精品视频在线| 国产永久免费网站| 午夜影院免费版| 91免费视频黄| 午夜啪啪免费视频| 无套内谢丰满少妇中文字幕| 8x8x成人免费视频| 欧美在线a视频| 在线观看免费视频污| 欧美美女一级片| 中文字幕 91| 奇米777在线视频| 一区二区三区免费播放| 99热成人精品热久久66| 三级4级全黄60分钟| 亚洲欧美另类动漫| 亚欧美在线观看| 欧美丝袜在线观看| 91成人在线视频观看| 999久久欧美人妻一区二区| 欧妇女乱妇女乱视频| 国产日韩欧美精品在线观看| 北条麻妃69av| 午夜免费福利在线| 精品综合久久久久| 欧美精品久久久久久久免费| 亚洲精品无码久久久久久| 丝袜制服一区二区三区| 国产美女18xxxx免费视频| 手机福利在线视频| 一卡二卡三卡视频| 成人在线看视频| 一二三av在线| 欧美日韩成人免费视频| 日本成人中文字幕在线| 桥本有菜av在线| 免费无码毛片一区二三区| 91免费视频污| 欧美精品自拍视频| 污网站在线免费| www国产精品内射老熟女| 少妇一级淫免费播放| www.av91| 美女网站免费观看视频| 污污污污污污www网站免费| 久久美女福利视频| 黄色网zhan| 国产肥臀一区二区福利视频| 国产精品久久久久久久av福利| 老司机午夜免费福利视频| 国产在线青青草| 国内少妇毛片视频| 国产精品久久久久久9999| 国产女女做受ⅹxx高潮| 日韩视频一二三| 一二三级黄色片| 美女网站免费观看视频| 草草草视频在线观看| 免费网站在线观看视频 | 日韩av在线中文| 97超碰青青草| 日本手机在线视频| 黄色a级在线观看| 红桃视频 国产| 一区二区免费av| 国产麻花豆剧传媒精品mv在线| 日本手机在线视频| 国产青草视频在线观看| 黄瓜视频免费观看在线观看www| 手机看片福利日韩| 国产xxxxx在线观看| 九一国产精品视频| 欧美日韩精品在线一区二区| 男女猛烈激情xx00免费视频| 人人妻人人做人人爽| 丁香婷婷综合激情| 国产精品一区在线免费观看| 亚洲 激情 在线| 亚洲一区在线不卡| 亚洲精品久久久久久宅男| 成年网站免费在线观看| 亚洲第一天堂久久| 污视频在线观看免费网站| 一级一片免费播放| 黄色一级视频播放| 国产色一区二区三区| 免费av手机在线观看| 成人免费网站入口| 日韩欧美国产片| 五月天色婷婷综合| 17c丨国产丨精品视频| 无码人妻少妇伦在线电影| 国模无码视频一区二区三区| 久久久精品三级| 午夜久久福利视频| 中文字幕日韩精品无码内射| 欧美成人三级在线视频| 黄色片网址在线观看| 粗暴91大变态调教| 97人人模人人爽人人澡| 久久久亚洲精品无码| 日本美女高潮视频| 菠萝蜜视频在线观看入口| 日韩av一二三四区| 日本成人xxx| 亚洲热在线视频| 一本色道久久亚洲综合精品蜜桃| 手机福利在线视频| 99爱视频在线| 日本一道在线观看| 波多结衣在线观看| 国产九色porny| 国产精品亚洲天堂| a天堂资源在线观看| 毛片毛片毛片毛| 免费黄色日本网站| www.69av| 成人av毛片在线观看| 亚洲视频在线a| a级黄色小视频| 亚洲妇熟xx妇色黄蜜桃| 亚洲一区在线不卡|