国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 學院 > 開發設計 > 正文

使用Factory Method模式

2019-11-18 14:29:03
字體:
來源:轉載
供稿:網友

  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: race.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。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
四虎精品视频| www.三级.com| 国产专区在线| 国产永久免费高清在线观看视频| 不卡av免费观看| 久久久久久久久久久久久91| 黄色免费av| 国产福利在线播放| 先锋av资源网| 久草.com| √天堂资源中文www| av网站大全在线观看| 四虎成年永久免费网站| 九九热免费视频| 丁香视频免费观看| 国产在线超碰| 91美女主播在线视频| 欧美婷婷久久五月精品三区| 中文字幕乱在线伦视频乱在线伦视频| 国产三级在线观看| 青青久草在线| 在线成人综合色一区| 五月婷婷导航| 日本卡一卡2卡3卡4精品卡网站| 五月亚洲综合| 九九热视频精品在线观看| 影音av资源站| 国产va在线| 国产午夜在线| 99色在线视频| 福利视频网址导航| 日韩在线天堂| 亚洲人成电影| 亚洲精品视频区| 在线天堂视频| 精品av中文字幕在线毛片| 国产视频97| 国产高清在线视频| 国产高清一级片| ·天天天天操| av亚洲男人天堂| 伊人永久在线| www.色婷婷| 欧美日韩国产亚洲沙发| 天天操夜夜做| av在线官网| 九九精品九九| 国产乱xxⅹxx国语对白| 国产男女无套在线播放| 成年网站免费入口在线观看| 国产嫩草在线视频| 国产一区二区三区四区尤物| 国产一卡2卡3卡免费网站| 国产日产一区二区| 伊人网在线免费观看| 日本久久网站| 国产区视频在线播放| 国产爆初菊在线观看免费视频网站 | 中文字幕在线资源| 国产色视频网站| 午夜影院免费看| 91av资源在线| 在线观看中文字幕| 国产精品一区二区婷婷| 精品一二三四| 成人欧美亚洲| 在线观看av网站永久| 日韩中文字幕久久久经典网| 黄色毛片在线观看| 国产成在线观看免费视频| 2021av天天| 香蕉视频在线观看网站| 九九热视频在线| 国产精品久久久久一区二区国产| 国产一级二级三级在线观看| 国产激情在线视频| 激情丁香久久| 在线国产中文字幕| 天天操天天曰| 四虎成年永久免费网站| 国产视频中文字幕| 高潮毛片在线观看| 亚洲精品影视在线| 综合图区亚洲白拍在线 | 最近中文字幕mv免费高清视频8| 狠狠狠综合7777久夜色撩人| 91久久精品国产性色| 在线看黄网址| 激情丁香在线| 永久免费av网站| 狠狠操五月天| 国产不卡精品一区二区三区| 日本黄色免费网址| 91中文字幕| 国产麻豆精品入口在线观看| 日本电影在线观看| 在线中文字幕第一页| 国产精品一区二区婷婷| 在线观看的av网站| 国产黄色片在线播放| 国产69精品久久app免费版 | 中文乱码字幕av网站| 午夜国产福利在线| 国产精品自拍在线观看| 色吊丝av中文字幕| 99久久精品免费观看国产| 中文字幕在线永久在线视频| 欧美啪啪精品| 欧美视频免费一区二区三区| 精品av中文字幕在线毛片| 国产丝袜在线观看视频| 一本大道香蕉8中文在线视频| 国产精品视频一区麻豆| 国产youjizz在线| 国产高清大尺度一区二区不卡| 丁香在线视频| 国产伦精品一区二区三区高清版禁| xxx国产精品| 久蕉依人在线视频| 国内精品免费一区二区三区| 成年网在线观看免费观看网址| 黄色av电影在线播放| 国产一区二区三区美女秒播| 最近中文字幕在线中文视频| 综合激情亚洲| 国产精品99爱免费视频| 国产尤物视频| 天堂资源在线中文| 国产福利一区二区在线精品| 精品国产美女福利到在线不卡| 精品国产免费观看一区| 超碰国产在线观看| 国产天堂在线| av中文天堂在线| 好男人免费精品视频| 国产无遮挡又黄又爽免费网站 | 国产美女极品在线| 国产人成在线观看| 在线中文字幕视频| www在线视频| 国产激情三区| 国产伦精品一区二区三区高清版禁 | 在线播放国产区| 超碰在线观看免费版| 国产美女高潮| 中文av在线播放| 国产69精品久久app免费版 | 国产在线看片| 97中文字幕| 四虎国产精品永久在线 | 蜜桃av在线免费观看| 精品免费视频一卡2卡三卡4卡不卡| 青草在线视频在线观看| 精品国产高清a毛片无毒不卡| 欧美性xxxx交| 国产高清在线a视频大全| 九色福利视频| www555久久| 亚洲第一成人在线视频| 中文国产字幕在线观看| 国产视频资源| 丁香花高清在线观看完整版| 18成年在线观看| 国产区视频在线| 五月婷婷在线观看| 国产麻豆精品高清在线播放| eeuss影影院www在线播放| 精品国产一区二区三区不卡在线 | 国产中文在线视频| 日本亚洲精品| 日本h视频在线观看| 青青草原国产在线| 中文在线视频| 精品免费视频一卡2卡三卡4卡不卡| 导航福利在线| 91福利在线免费| 导航福利在线| 午夜视频在线看| 91av久久| 国产精品理人伦一区二区三区| 91精选福利| 亚洲天堂视频在线观看免费| 依依成人在线| 日本一二三区视频免费高清| 欧美日韩一区二区三区在线播放| 男人天堂亚洲| 国产小视频在线| 国产精品视频一区二区久久| 在线国产一区二区三区| а√最新版地址在线天堂| 青青青青在线| 国产精品一区牛牛影视| 国产精品爱久久久久久久小说| 精品视频一区二区观看| 亚洲久草视频| 国产精品天堂| 午夜在线不卡| 91精选福利| 成年网在线观看免费观看网址| 国产黄大片在线观看画质优化|