在线看毛片视频-国产免费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>
  • 成人免费无码av| 人妻夜夜添夜夜无码av| 欧美精品第三页| 91精品国产91久久久久麻豆 主演| 热久久久久久久久| 亚洲精品免费一区亚洲精品免费精品一区| 国产精彩免费视频| 中文字幕在线观看第三页| 超碰网在线观看| 美女网站免费观看视频| 久久精品午夜福利| 国模私拍视频在线观看| 捷克做爰xxxⅹ性视频| 吴梦梦av在线| 亚洲国产精品成人天堂| 日本精品www| 中文字幕国内自拍| 波多野结衣激情| 日韩欧美精品免费| 免费在线激情视频| 三区视频在线观看| 日b视频免费观看| 黄色动漫网站入口| 中文字幕在线视频一区二区三区| 黄色网络在线观看| 日本十八禁视频无遮挡| 日韩一区二区三区不卡视频| 青青草原国产免费| 国模杨依粉嫩蝴蝶150p| 黄色手机在线视频| 人妻夜夜添夜夜无码av| 一级黄色特级片| 性一交一乱一伧国产女士spa| 各处沟厕大尺度偷拍女厕嘘嘘| 免费裸体美女网站| 国产在线视频综合| 男人舔女人下面高潮视频| 自拍偷拍视频在线| 在线视频日韩一区| 少妇高潮喷水在线观看| 日本国产一级片| 女人另类性混交zo| 男女裸体影院高潮| 日韩一区二区三区不卡视频| 成人性生活视频免费看| 97超碰人人看| 欧美 激情 在线| 欧美成人精品免费| 久久精品国产精品亚洲精品色| 日本成人在线免费视频| 久久www视频| 手机看片日韩国产| 美女在线视频一区二区| 已婚少妇美妙人妻系列| 欧美日韩黄色一级片| 亚洲av综合色区| 18视频在线观看娇喘| 日韩高清第一页| 日韩av手机版| 992kp快乐看片永久免费网址| 欧美成人xxxxx| 欧美日韩成人免费视频| 亚洲国产成人精品无码区99| 国产91porn| 国产精品无码免费专区午夜| 青娱乐国产精品视频| 亚洲女人在线观看| 超碰91在线播放| 一区二区三区四区免费观看| 黄色一级片免费播放| 超碰免费在线公开| 97在线免费视频观看| 中文字幕人妻熟女人妻洋洋| 超碰10000| 国产freexxxx性播放麻豆| 久久男人资源站| 欧美三级一级片| aaa毛片在线观看| 日韩欧美国产片| 91九色国产ts另类人妖| 成人免费在线网| 欧美日韩在线视频一区二区三区| 国产乱子夫妻xx黑人xyx真爽 | 天天爽夜夜爽一区二区三区| 无人在线观看的免费高清视频| 粗暴91大变态调教| 91免费视频污| 国产一二三在线视频| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 热久久精品国产| 97超碰人人看| 欧美女人性生活视频| 三日本三级少妇三级99| 久久av综合网| 中国黄色片免费看| 免费在线黄网站| 亚洲黄色小视频在线观看| 大桥未久一区二区三区| 日本成年人网址| 日本特黄在线观看| 欧美二区在线视频| 999热精品视频| 成人小视频在线看| 国产 国语对白 露脸| mm1313亚洲国产精品无码试看| 日韩 欧美 自拍| 日日噜噜噜噜久久久精品毛片| 艳母动漫在线观看| 香蕉视频禁止18| 精品少妇人妻av免费久久洗澡| 捷克做爰xxxⅹ性视频| 国产淫片av片久久久久久| 91精品国产毛片武则天| 亚洲这里只有精品| 50路60路老熟妇啪啪| 国产精品一线二线三线| 在线观看三级网站| 57pao国产成永久免费视频| 亚洲午夜无码av毛片久久| 欧美一区二区视频在线播放| 国产不卡的av| 成人av毛片在线观看| 美女一区二区三区视频| 免费av网址在线| 久久婷婷五月综合色国产香蕉| 97在线国产视频| 欧美亚洲色图视频| 50度灰在线观看| 国产一级不卡视频| 麻豆传媒网站在线观看| 国产探花在线观看视频| 吴梦梦av在线| 日韩中文在线字幕| 六月婷婷激情网| 国产精品一色哟哟| 免费超爽大片黄| 免费毛片小视频| 国产裸体免费无遮挡| 青青青在线视频免费观看| 国内自拍视频一区| 国产wwwxx| 香蕉视频色在线观看| 好色先生视频污| 精品成在人线av无码免费看| 国产夫妻自拍一区| 男人日女人下面视频| 黄色高清无遮挡| 爱爱爱爱免费视频| 久久久无码中文字幕久...| 欧美做暖暖视频| 国产性xxxx18免费观看视频| 天天插天天操天天射| 国产四区在线观看| 日韩国产欧美亚洲| 亚洲欧美自偷自拍另类| 亚洲天堂第一区| 久久网站免费视频| 亚洲免费黄色录像| 黄页免费在线观看视频| 免费看污黄网站| 17c丨国产丨精品视频| 青青在线视频观看| 六月婷婷激情网| 国产无套内射久久久国产| 天堂av2020| 日本日本19xxxⅹhd乱影响| av免费一区二区| 久久久久免费看黄a片app| 国产又大又黄又猛| 日本午夜激情视频| 999在线观看| 凹凸国产熟女精品视频| 99re99热| 欧美特级aaa| 成年人视频观看| 免费观看亚洲视频| 一起操在线视频| 日韩在线视频在线观看| 五月天激情图片| 亚洲理论中文字幕| 国产精品久久久久9999小说| 一本大道东京热无码aⅴ| 亚洲人成无码www久久久| 国产曰肥老太婆无遮挡| 做a视频在线观看| 一区二区三区免费播放| 久久久久久久久久久99| 日韩免费在线观看av| 国产高清免费在线| 成年人网站av| 亚洲欧美日韩精品一区| 黄色片视频在线免费观看| 欧美视频在线观看视频| 中文字幕一区二区三区四区五区人| 8x8x最新地址| 国产又大又黄又粗的视频| 精品少妇无遮挡毛片| 人人妻人人添人人爽欧美一区| 欧美一区二区激情| 久久99久久99精品|