国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

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

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。

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

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        欧美日韩国产综合一区二区 | 亚洲精品高清在线| 国产又粗又猛又爽又黄91精品| 日韩一级免费观看| 日本欧美大码aⅴ在线播放| 日韩视频免费直播| 91首页免费视频| 亚洲国产精品嫩草影院| 91麻豆精品国产91久久久久| 久久精品国产99| 久久亚洲一级片| 99热99精品| 日韩高清电影一区| 久久影院午夜片一区| 不卡的看片网站| 一区二区高清免费观看影视大全| 欧美天堂亚洲电影院在线播放| 亚洲成人先锋电影| 久久看人人爽人人| 91免费精品国自产拍在线不卡| 天使萌一区二区三区免费观看| 久久精品夜色噜噜亚洲a∨ | 五月婷婷欧美视频| 精品区一区二区| 欧美高清激情brazzers| 免费人成精品欧美精品| 中文字幕一区二区三| 欧美人与z0zoxxxx视频| 成人免费视频网站在线观看| 图片区小说区区亚洲影院| 久久久www免费人成精品| 欧美怡红院视频| 成人爱爱电影网址| 日韩av中文字幕一区二区三区| 亚洲国产精品高清| 欧美日韩成人激情| 色网综合在线观看| 国产在线国偷精品免费看| 亚洲成人激情自拍| 综合色天天鬼久久鬼色| 在线不卡免费欧美| 91在线小视频| heyzo一本久久综合| 韩国精品在线观看| 黄色成人免费在线| 精品一区二区在线观看| 午夜精品久久久| 午夜婷婷国产麻豆精品| 一区二区三区欧美| 亚洲综合视频在线观看| 亚洲美女视频一区| 自拍偷拍欧美精品| 综合av第一页| 亚洲免费观看高清完整| 亚洲欧美一区二区久久| 亚洲三级小视频| 久久一区二区三区四区| 亚洲激情自拍视频| 91精品国产综合久久香蕉的特点 | 石原莉奈在线亚洲二区| 一个色在线综合| 一区二区三区久久久| 一区二区三区四区不卡在线 | 日韩一级二级三级精品视频| 欧美午夜精品一区| 日本美女一区二区三区视频| 亚洲美女视频一区| 国产亚洲一二三区| 欧美国产亚洲另类动漫| 久久久99精品久久| 中文字幕亚洲精品在线观看| 亚洲欧美国产毛片在线| 亚洲主播在线播放| 日韩电影免费在线| 国产在线麻豆精品观看| 成人做爰69片免费看网站| 欧美高清性hdvideosex| 欧美日韩一区二区三区免费看| 欧美日韩二区三区| 亚洲精品一区在线观看| 日本一区二区久久| 一区二区三区不卡视频| 午夜精品视频一区| 国产伦精品一区二区三区免费| 成人免费毛片高清视频| 国产很黄免费观看久久| 久久精品水蜜桃av综合天堂| 国产成人福利片| 国精产品一区一区三区mba视频| 国产一区二区三区黄视频 | 国产一区二区精品久久| 成人国产精品免费网站| 欧美日韩和欧美的一区二区| 久久―日本道色综合久久| 亚洲视频精选在线| 日本伊人午夜精品| 粉嫩欧美一区二区三区高清影视 | 蜜臀久久99精品久久久久久9 | 亚洲你懂的在线视频| 亚洲va欧美va国产va天堂影院| 国产一区二区在线视频| 色偷偷一区二区三区| 91精品国产品国语在线不卡| 国产欧美日韩亚州综合| 亚洲超丰满肉感bbw| 国产91露脸合集magnet | 欧美浪妇xxxx高跟鞋交| 国产精品久久久久影院色老大 | 欧美日韩国产综合一区二区三区| 26uuu精品一区二区| 亚洲高清一区二区三区| youjizz久久| 欧美va日韩va| 日韩激情av在线| 欧美专区日韩专区| 亚洲日本va午夜在线影院| 国产精品一区三区| 欧美一区二区三区免费观看视频| 成人免费在线视频| 国产成人自拍在线| 精品国产凹凸成av人网站| 亚洲gay无套男同| 91色九色蝌蚪| 中日韩av电影| 国产成人亚洲综合色影视| 2020国产精品久久精品美国| 午夜国产精品影院在线观看| av在线这里只有精品| 国产精品视频免费| 琪琪一区二区三区| 亚洲资源在线观看| 在线视频中文字幕一区二区| 国产欧美日韩在线| 免费成人小视频| 欧美亚洲图片小说| 亚洲三级在线观看| 成人午夜免费视频| 国产欧美日韩久久| 福利一区二区在线观看| 国产精品久久毛片av大全日韩| 国产精品亚洲第一| 久久久久久电影| 黄一区二区三区| 久久九九影视网| 99视频在线观看一区三区| 中文字幕免费观看一区| eeuss鲁一区二区三区| 亚洲免费观看高清完整版在线观看 | 国产福利电影一区二区三区| 欧美一区二区精品在线| 一区二区三区.www| 欧美日韩在线观看一区二区 | 成人不卡免费av| 久久久精品天堂| 国产成人免费在线| 亚洲精品欧美二区三区中文字幕| 色8久久精品久久久久久蜜| 亚洲免费大片在线观看| 色综合久久中文字幕综合网| 一区二区三区四区精品在线视频| 欧美视频在线播放| 日日夜夜一区二区| 日韩欧美国产综合| 狠狠色综合日日| 亚洲人成精品久久久久久| 99在线精品视频| 日韩1区2区3区| 国产精品嫩草影院com| 91尤物视频在线观看| 亚洲成人在线观看视频| 精品日韩99亚洲| 成人激情综合网站| 午夜视频一区在线观看| 久久午夜老司机| 一本大道久久精品懂色aⅴ| 亚洲激情图片一区| 日韩欧美一区二区不卡| www.欧美日韩国产在线| 天天色综合成人网| 亚洲欧洲精品成人久久奇米网| 欧美日韩中文精品| 国产毛片精品国产一区二区三区| 亚洲欧美成aⅴ人在线观看| 色八戒一区二区三区| 国产一区二区女| 亚洲18色成人| 亚洲欧美偷拍卡通变态| 日韩三级在线免费观看| 国产不卡高清在线观看视频| 怡红院av一区二区三区| 波多野结衣欧美| 欧洲精品视频在线观看| 五月天国产精品| 欧美一区二区精品在线| 成人av网站在线| 精久久久久久久久久久| 亚洲丶国产丶欧美一区二区三区| 国产精品不卡在线观看| 日韩欧美黄色影院| 欧美日韩卡一卡二|