锘??xml version="1.0" encoding="utf-8" standalone="yes"?>内射干少妇亚洲69XXX,亚洲AV日韩AV一区二区三曲,亚洲av综合av一区http://www.tkk7.com/zhoumin007/category/9003.html璁板綍鎴戠殑鎵鍋氭墍鎬?/description>zh-cnFri, 02 Mar 2007 06:40:16 GMTFri, 02 Mar 2007 06:40:16 GMT60Singletonhttp://www.tkk7.com/zhoumin007/articles/38287.htmlzhouminzhouminThu, 30 Mar 2006 09:15:00 GMThttp://www.tkk7.com/zhoumin007/articles/38287.htmlhttp://www.tkk7.com/zhoumin007/comments/38287.htmlhttp://www.tkk7.com/zhoumin007/articles/38287.html#Feedback0http://www.tkk7.com/zhoumin007/comments/commentRss/38287.htmlhttp://www.tkk7.com/zhoumin007/services/trackbacks/38287.html聽聽聽 鏌愪簺鎯呭喌涓嬩竴涓被鍙兘鏈変竴涓疄渚嬶紝濡倀hread pool,caches,objects that handle preferences and registry settings,objects used for logging,瀵硅繖浜涙儏鍐典笅濡傛灉浜х敓澶氫簬涓涓殑瀹炰緥浼?xì)瀵艰嚧涓嶆甯哥殑琛屼负鍜寢躬璐硅祫婧愩?br />聽聽
publicclass聽Singleton聽{
聽聽聽聽
privatevolatilestatic聽Singleton聽singleton;

聽聽聽聽
//聽璁句負(fù)private錛屽鐣屼笉鑳介氳繃new鐨勬柟娉曟潵鑾峰緱涓涓疄渚嬨?/span>
聽聽聽聽private聽Singleton()聽{
聽聽聽聽}


聽聽聽聽
//聽synchronized濡傛灉鍔犲湪鏂規(guī)硶瀹氫箟澶勶紝寮閿鐩稿杈冨ぇ
聽聽聽聽publicstatic聽Singleton聽getInstance()聽{
聽聽聽聽聽聽聽聽
if聽(singleton聽==null)聽{
聽聽聽聽聽聽聽聽聽聽聽聽
//蹇呴』澶勭悊澶氱嚎紼嬪甫鏉ョ殑闂錛屽鏋渢hread1鎵ц鍒頒笂涓姝ワ紝鍚屾椂thread2涔熸墽琛屽埌涓婁竴姝ワ紝
聽聽聽聽聽聽聽聽聽聽聽聽
//閮藉垽鏂嚭singleton==null聽灝變細(xì)寰楀埌涓や釜瀹炰緥銆?/span>
聽聽聽聽聽聽聽聽聽聽聽聽synchronized聽(Singleton.class)聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
if聽(singleton聽==null)聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽singleton聽
=new聽Singleton();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽
return聽singleton;
聽聽聽聽}


聽聽聽聽
publicvoid聽display()聽{
聽聽聽聽聽聽聽聽System.out.println(
"singleton");
聽聽聽聽}

}


zhoumin 2006-03-30 17:15 鍙戣〃璇勮
]]>
Iteratorhttp://www.tkk7.com/zhoumin007/articles/38278.htmlzhouminzhouminThu, 30 Mar 2006 08:33:00 GMThttp://www.tkk7.com/zhoumin007/articles/38278.htmlhttp://www.tkk7.com/zhoumin007/comments/38278.htmlhttp://www.tkk7.com/zhoumin007/articles/38278.html#Feedback0http://www.tkk7.com/zhoumin007/comments/commentRss/38278.htmlhttp://www.tkk7.com/zhoumin007/services/trackbacks/38278.html涓錛?br />聽聽聽聽 鑱氶泦鐨勬柟寮忔湁澶氱(Vector,ArrayList,Queue,HashSet,Array)絳夛紝瀵瑰瓨鍙栧垹瀵硅薄鐨勬柟寮忓悇涓嶇浉鍚岋紝涓轟簡(jiǎn)緇熶竴鎺ュ彛錛屼嬌鐢↖terator妯″紡錛屽鎴風(fēng)鍜屽叿浣揅ollection涓棿澧炲姞涓灞侷terator銆?/p>
public class 聽ArrayIterator聽 implements 聽I(yíng)terator聽 {
聽聽聽聽
private 聽Object[]聽arr;
聽聽聽聽
private int 聽index = 0 ;
聽聽聽聽
public 聽ArrayIterator(Object[]聽arr)聽 {
聽聽聽聽聽聽聽聽
this .arr聽 = 聽arr;
聽聽聽聽}

聽聽聽聽
public boolean 聽hasNext()聽 {
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽
return 聽index < arr.length ? true : false ;
聽聽聽聽}

聽聽聽聽
public 聽Object聽next()聽 {

聽聽聽聽聽聽聽聽
return 聽arr[index ++ ];
聽聽聽聽}

}
榪欐牱鏁扮粍涔熸湁浜?jiǎn)Iterator鎺ュ彛錛屽鎴風(fēng)涓嶇敤綆℃槸鐢ㄦ暟緇勫瓨鐨勫璞¤繕鏄疞ist錛岄兘鐢↖terator鐨勬柟娉曠粺涓澶勭悊銆?br />
The Iterator Pattern provides a way to access the elements of an aggregate object sequentially without exposing its underlying representation.

zhoumin 2006-03-30 16:33 鍙戣〃璇勮
]]>
Templatehttp://www.tkk7.com/zhoumin007/articles/38271.htmlzhouminzhouminThu, 30 Mar 2006 07:56:00 GMThttp://www.tkk7.com/zhoumin007/articles/38271.htmlhttp://www.tkk7.com/zhoumin007/comments/38271.htmlhttp://www.tkk7.com/zhoumin007/articles/38271.html#Feedback0http://www.tkk7.com/zhoumin007/comments/commentRss/38271.htmlhttp://www.tkk7.com/zhoumin007/services/trackbacks/38271.html聽聽聽 鍑嗗楗枡鐨勬柟娉曪細(xì)
聽聽聽
publicclass聽Coffee(){
publicvoid聽prepareRecipe(){
聽聽boilWater();
聽聽brewCoffeeGrinds();
聽聽pourInCup();
聽聽addSugarAndMilk();
聽}

聽聽
//..
}

publicclass聽Tea(){
publicvoid聽prepareRecipe(){
聽聽boilWater();
聽聽steepTeaBag();
聽聽pourInCup();
聽聽addLemon();
聽聽
//..

聽}

}
鍙互鍙戠幇錛岃繖涓や釜綾諱腑prepareRecipe()鏂規(guī)硶錛岄儴鍒嗕唬鐮佹槸涓鏍風(fēng)殑錛屾墍浠ユ妸榪欎釜鏂規(guī)硶鎻愬埌鍩虹被涓紝鍏朵腑boilWater()鍜宲ourInCup()鏂規(guī)硶鎵鏈夊瓙綾婚兘鏄竴鏍風(fēng)殑錛屽彲浠ュ湪鍩虹被瀹炵幇錛屽叾瀹冧袱涓柟娉曚負(fù)abstract錛屽張鍏蜂綋瀛愮被鏉ュ疄鐜般?br />聽
The Template Pattern defines the skeleton of an alogrithm in a method,deffering some steps to subclass.
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Template Pattern lets subclass redefine certain steps of an alogrithm without changing the alogrithm's structure.

zhoumin 2006-03-30 15:56 鍙戣〃璇勮
]]>
Proxyhttp://www.tkk7.com/zhoumin007/articles/38268.htmlzhouminzhouminThu, 30 Mar 2006 07:34:00 GMThttp://www.tkk7.com/zhoumin007/articles/38268.htmlhttp://www.tkk7.com/zhoumin007/comments/38268.htmlhttp://www.tkk7.com/zhoumin007/articles/38268.html#Feedback0http://www.tkk7.com/zhoumin007/comments/commentRss/38268.htmlhttp://www.tkk7.com/zhoumin007/services/trackbacks/38268.html涓錛?br />聽聽聽聽 鏌愪簺鎯呭喌涓嬪鎴蜂笉鎯蟲垨涓嶈兘鐩存帴寮曠敤涓涓璞★紝鑰屼唬鐞嗗璞″彲浠ュ湪瀹㈡埛绔拰鐩爣瀵硅薄涔嬮棿璧蜂腑浠嬩綔鐢?br />聽聽聽 1錛氳繙紼?remote)浠g悊錛氳闂笉鍚屽湪涓涓狫VM鐨勭被鐨勬柟娉曘?br />聽聽聽 2錛氳櫄鎷?virtual)浠g悊錛氭牴鎹渶瑕佸垱寤轟竴涓祫婧愭秷鑰楄緝澶х殑瀵硅薄錛屼嬌寰楁瀵硅薄鍙湪鐪熸闇瑕佹椂鎵嶅垱寤?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 (濡傚姞杞藉浘鐗?
聽聽聽 3錛氭櫤鑳藉紩鐢?smart reference)浠g悊錛氬綋涓涓璞¤寮曠敤鏃訛紝鎻愪緵涓浜涢澶栫殑鎿嶄綔錛屾瘮濡傚皢姝ゅ璞¤皟鐢ㄧ殑
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽嬈℃暟璁板綍涓嬫潵銆?br />聽聽聽 4錛氫繚鎶?protection)浠g悊錛氭帶鍒朵竴涓璞$殑璁塊棶錛堟潈闄愭帶鍒訛級(jí)銆?br />聽聽

// 鏌ヨ浠g悊綾?/span>
public class 聽SearcherProxy聽 implements 聽Searcher {
聽聽聽聽
private 聽Searcher聽searcher;
聽聽聽聽
public 聽SearcherProxy()
聽聽聽聽
{
聽聽聽聽聽聽聽聽searcher
= new 聽RealSearcher(); // 鐪熸鐨勬煡璇㈢被
聽聽聽聽}

聽聽聽聽
public 聽String聽doSearch(String聽userId,聽String聽searchType)聽 {
聽聽聽聽聽聽聽聽
if 聽(checkAccess(userId))
聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽String聽result
= searcher.doSearch( null ,searchType);
聽聽聽聽聽聽聽聽聽聽聽聽logUsage(userId);
聽聽聽聽聽聽聽聽聽聽聽聽
return 聽result;
聽聽聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽
else return null ;
聽聽聽聽}

聽聽聽聽
// 媯(gè)鏌ユ潈闄?/span>
聽聽聽聽 private boolean 聽checkAccess(String聽userId)
聽聽聽聽
{
聽聽聽聽聽聽聽聽AccessValidater聽validater
= new 聽AccessValidater();
聽聽聽聽聽聽聽聽
return 聽validater.validateUser(userId);
聽聽聽聽}

聽聽聽聽
// 璁板綍浣跨敤鎯呭喌
聽聽聽聽 private void 聽logUsage(String聽userId)
聽聽聽聽
{
聽聽聽聽聽聽聽聽UserLogger聽logger
= new 聽UserLogger();
聽聽聽聽聽聽聽聽logger.setUserId(userId);
聽聽聽聽聽聽聽聽logger.save();
聽聽聽聽}

}

// 瀹㈡埛绔嬌鐢?/span>
聽聽聽聽 public static void 聽main(String[]聽args)
聽聽聽聽
{
聽聽聽聽聽聽聽聽Searcher聽searcher
= new 聽SearcherProxy();
聽聽聽聽聽聽聽聽System.out.println(searcher.doSearch(
" admin " , " haha " ));
聽聽聽聽}




zhoumin 2006-03-30 15:34 鍙戣〃璇勮
]]>
Facadehttp://www.tkk7.com/zhoumin007/articles/38221.htmlzhouminzhouminThu, 30 Mar 2006 03:56:00 GMThttp://www.tkk7.com/zhoumin007/articles/38221.htmlhttp://www.tkk7.com/zhoumin007/comments/38221.htmlhttp://www.tkk7.com/zhoumin007/articles/38221.html#Feedback0http://www.tkk7.com/zhoumin007/comments/commentRss/38221.htmlhttp://www.tkk7.com/zhoumin007/services/trackbacks/38221.html聽聽聽聽 涓涓湅dvd鐨勪緥瀛愶細(xì)閫氬父鍋氭硶錛氬厛璋冭妭鐏厜錛岃皟鑺傚睆騫曪紝璋冭妭鎶曞獎(jiǎng)浠紝璋冭妭鍔熸斁錛岀劧鍚庢墠鏄紑DVD.
聽聽聽聽

light.dim(
10);

screen.down();

projector.on();
projector.setInput(dvd);

amp.on();
amp.setVolume(
5);

dvd.on();
dvd.playMovie();

聽聽聽 榪欏叾瀹炴槸涓涓瘮杈冩櫘閫氱殑瀹屾暣闇姹傦紝榪欑‘娑夊強(qiáng)鍒頒簲鍏釜綾伙紝濡傛灉鐩存帴緇欒繖鏍風(fēng)殑鎺ュ彛緇檆lient錛屽崄鍒嗕笉鏂逛究錛屾垜浠簲璇ユ牴鎹渶姹傦紝鎶婄粏鑺傚寘瑁呰搗鏉ワ紝鐩存帴鎻愪緵涓涓猻howMovie錛堝寘瑁呬互涓婂疄鐜幫級(jí)鐨勬柟娉曠粰瀹㈡埛绔?br />
聽 The Facade Pattern provides a unified interface to a set of interfaces聽in a聽subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.聽

聽 when:
聽1.涓轟竴涓鏉傚瓙緋葷粺鎻愪緵涓涓畝鍗曟帴鍙?br />聽聽 錛?:鐢ㄤ竴涓柟娉曞寘瑁呬笉鍚岀被鐨勫涓柟娉曘?:鎶婁竴涓昏緫妯″潡綾繪帴鍙i泦涓埌涓涓被錛?br />聽2.瀛愮郴緇熺殑鐙珛鎬э紝灝嗕竴涓瓙緋葷粺涓庡畠鐨勫鎴風(fēng)浠ュ強(qiáng)鍏跺畠瀛愮郴緇熷垎寮錛屽彲鎻愰珮瀛愮郴緇熺殑鐙珛鎬у拰鍙Щ妞嶆?br />聽3.聽 灞傛鍖栫粨鏋勶紝綆鍖栧眰涓庡眰鐩存帴鐨勪緷璧栧叧緋匯?img src ="http://www.tkk7.com/zhoumin007/aggbug/38221.html" width = "1" height = "1" />

zhoumin 2006-03-30 11:56 鍙戣〃璇勮
]]>
Adapterhttp://www.tkk7.com/zhoumin007/articles/38216.htmlzhouminzhouminThu, 30 Mar 2006 03:29:00 GMThttp://www.tkk7.com/zhoumin007/articles/38216.htmlhttp://www.tkk7.com/zhoumin007/comments/38216.htmlhttp://www.tkk7.com/zhoumin007/articles/38216.html#Feedback0http://www.tkk7.com/zhoumin007/comments/commentRss/38216.htmlhttp://www.tkk7.com/zhoumin007/services/trackbacks/38216.html聽聽聽聽 鐜板疄鐢熸椿渚嬪瓙錛氭彃搴ф槸涓夌浉鐨勫鏋滅數(shù)鍣ㄦ彃澶存槸涓ょ浉鐨勶紝閭d箞闇瑕佷竴涓猘dapter鎶婁笁鐩哥殑鎻掑駭杞垚涓ょ浉銆?br />聽聽聽聽
//Enumeration鍒癐terator鐨凙dapter
publicclass聽EnumerationIterator聽implements聽I(yíng)terator聽{
聽聽聽聽
private聽Enumeration聽enumeration;
聽聽聽聽
public聽EnumerationIterator(Enumeration聽enumeration)
聽聽聽聽
{
聽聽聽聽聽聽聽聽
this.enumeration=enumeration;
聽聽聽聽}

聽聽聽聽
publicboolean聽hasNext()聽{
聽聽聽聽聽聽聽聽
return聽enumeration.hasMoreElements();
聽聽聽聽}


聽聽聽聽
public聽Object聽next()聽{
聽聽聽聽聽聽聽聽
return聽enumeration.nextElement();
聽聽聽聽}

聽聽聽聽
publicvoid聽remove()聽{
聽聽聽聽聽聽聽聽
thrownew聽UnsupportedOperationException();
聽聽聽聽}

}

聽聽聽聽/**
聽聽聽聽聽*聽瀹㈡埛绔唬鐮?br />聽聽聽聽聽
*/

聽聽聽聽
publicstaticvoid聽main(String[]聽args)聽{
聽聽聽聽聽聽聽聽Vector聽vect
=new聽Vector();
聽聽聽聽聽聽聽聽vect.add(
"v1");
聽聽聽聽聽聽聽聽vect.add(
"v2");
聽聽聽聽聽聽聽聽display(
new聽EnumerationIterator(vect.elements()));
聽聽聽聽聽聽聽聽List聽list1
=new聽ArrayList();
聽聽聽聽聽聽聽聽list1.add(
"L1");
聽聽聽聽聽聽聽聽list1.add(
"L2");
聽聽聽聽聽聽聽聽display(list1.iterator());
聽聽聽聽}

聽聽聽聽
publicstaticvoid聽display(Iterator聽iter)
聽聽聽聽
{
聽聽聽聽聽聽聽聽
while聽(iter.hasNext())
聽聽聽聽聽聽聽聽
{
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(iter.next());
聽聽聽聽聽聽聽聽}

聽聽聽聽}

聽聽聽聽 The Adapter Pattern converts the interface of聽 a class into another interface the client expect.Adapter lets classes work together that couldn't otherwise because of聽 incompatible interfaces.
聽聽聽鍜孌ecorator妯″紡涓嶅悓錛宒ecorator瀵圭被鍖呰鍚庢槸澧炲姞瀹冪殑鍔熻兘錛岃孉dapter鏄敼鍙樻帴鍙e艦寮忎互閫傜敤client闇瑕?br />聽聽聽
聽聽 搴旂敤瀹炰緥錛歐INE鍦↙inux鐜涓嬭繍琛學(xué)indows紼嬪簭銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 JDBC/ODBC妗ャ?img src ="http://www.tkk7.com/zhoumin007/aggbug/38216.html" width = "1" height = "1" />

zhoumin 2006-03-30 11:29 鍙戣〃璇勮
]]>
Factoryhttp://www.tkk7.com/zhoumin007/articles/37829.htmlzhouminzhouminTue, 28 Mar 2006 08:28:00 GMThttp://www.tkk7.com/zhoumin007/articles/37829.htmlhttp://www.tkk7.com/zhoumin007/comments/37829.htmlhttp://www.tkk7.com/zhoumin007/articles/37829.html#Feedback0http://www.tkk7.com/zhoumin007/comments/commentRss/37829.htmlhttp://www.tkk7.com/zhoumin007/services/trackbacks/37829.html涓錛歝ase context:
聽聽聽聽涓涓狿izza綆$悊緋葷粺聽

public 聽Pizza聽orderPizza(String聽type) {
聽聽聽聽聽聽聽聽聽Pizza聽pizza;
聽聽聽聽聽聽聽聽聽
if 聽(type.equals( " cheese " ))聽pizza = new 聽CheesePizza();
聽聽聽聽聽聽聽聽聽
else if 聽(type.euals( " veggie " ))聽pizza = new
聽VeggiePizza();
聽聽聽聽聽聽聽聽聽pizza.bake();
聽聽聽聽聽聽聽聽聽pizza.box();
聽聽聽聽聽聽聽聽聽
return 聽pizza();
聽聽聽聽聽聽}

聽聽聽聽聽聽聽聽 闂錛氱孩鑹插瓧浣撻儴鍒嗗彲鑳戒細(xì)modification(澧炲姞鏂扮殑鎴栧垹闄ゆ棫鐨?錛屾墍浠ュ繀欏繪妸榪欓儴鍒嗗寘瑁呰搗鏉ユ垚涓涓嫭绔嬬殑綾匯?br />
浜岋細(xì)SimpleFactory妯″紡聽聽聽聽聽聽

聽聽 public class 聽SimplePizzaFactory {
聽聽聽聽聽聽聽聽pubic聽Pizza聽createPizza(String聽type)
{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽Pizza聽pizza;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽
if 聽(type.equals( " cheese " ))聽pizza = new 聽CheesePizza();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽
else if 聽(type.euals( " veggie " ))聽pizza = new 聽VeggiePizza();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽
return 聽pizza;
聽聽聽聽聽聽聽聽聽}

聽聽聽聽}

聽聽聽 浼樼偣錛氬洜涓烘槸涓涓嫭绔嬬殑綾伙紝鎵浠ュ彲浠ュ叡浜紝涓澶勪慨鏀瑰嵆鍙紝涓嶉渶淇敼瀹㈡埛绔?br />聽聽聽 緙虹偣錛氬"close-opening"鍘熷垯鏀寔涓嶅錛屽鏈夋柊浜у搧鍔犲叆榪樻槸瑕佹敼Factory涓殑浠g爜銆?br />聽聽聽 瀹炰緥錛欴ateFormat綾伙細(xì)聽聽聽聽聽聽聽聽聽聽聽聽聽聽

聽Date聽date = DateFormat.getDateInstance(DateFormat.DEFAULT,Locale.FRENCH);


涓夛細(xì)Factory Method妯″紡
聽聽聽聽聽聽聽聽褰撴瀯寤哄璞¢儴鍒嗛渶姹傚彂鐢熷彉鍖栵紝濡傜幇鍦╬izza鍒嗕負(fù)緹庡浗鍜屾剰澶у埄涓ょ鍙e懗銆?br />聽聽聽聽聽聽聽 瑙e喅鍔炴硶錛?:涓涓娊璞″垱寤哄熀綾伙紝abstract Product create();
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 2:鍏蜂綋綾繪潵瀹炵幇create鏂規(guī)硶
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽3:鎶借薄浜у搧鍩虹被銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽4:鍏蜂綋浜у搧綾匯?br />聽聽

// 鍏蜂綋宸ュ巶瀹炵幇
public class 聽UsPizzaFactory聽 extends 聽PizzaFactory {
聽聽
public 聽Pizza聽createPizza(String聽type) {
聽聽聽聽聽Pizza聽pizza;
聽聽聽聽聽
if 聽(type.equals( " cheese " ))聽pizza = new 聽UsCheesePizza();
聽聽聽聽聽
else if 聽(type.equals( " veggie " ))聽pizza = new 聽UsVeggiePizza();
聽聽聽聽聽
return 聽pizza;
聽聽}

}

The聽Factory Method Pattern defines an interface for creation聽an object,but let subclasses decide which class to聽 instantiate.Factory Method聽lets a class defer instantiation to subclasses.

鍥涳細(xì)Abstract Factory
聽聽聽聽 鎶借薄宸ュ巶妯″紡鍜屽伐鍘傛柟娉曟ā寮忕殑涓昏鍖哄埆鏄紝宸ュ巶鏂規(guī)硶妯″紡閽堝鐨勬槸涓涓駭鍝佺瓑綰х粨鏋勶紝鑰屾娊璞″伐鍘傛柟娉曞搴斿涓駭鍝佺瓑綰х粨鏋勩?br />聽聽聽聽聽
聽 瀹炰緥錛氬垱寤哄垎灞炰笉鍚屾搷浣滅郴緇熺殑瑙嗙獥鏋勪歡銆?br />聽聽聽聽聽聽聽聽聽聽



zhoumin 2006-03-28 16:28 鍙戣〃璇勮
]]>
Decoratorhttp://www.tkk7.com/zhoumin007/articles/37718.htmlzhouminzhouminTue, 28 Mar 2006 00:26:00 GMThttp://www.tkk7.com/zhoumin007/articles/37718.htmlhttp://www.tkk7.com/zhoumin007/comments/37718.htmlhttp://www.tkk7.com/zhoumin007/articles/37718.html#Feedback0http://www.tkk7.com/zhoumin007/comments/commentRss/37718.htmlhttp://www.tkk7.com/zhoumin007/services/trackbacks/37718.html聽聽聽聽聽聽聽 楗枡鍩虹被abstract Beverage{cost();}, 涓ょ楗枡瀛愮被HouseBlend錛孌ecaf閮藉疄鐜頒簡(jiǎn)cost()鏂規(guī)硶銆傛瘡縐嶉ギ鏂欐湁鑷繁鐨勪環(huán)閽憋紝濡傛灉鍔犵墰濂剁硸絳塩ondiments鎸変喚綆楅挶銆?br />
浜岋細(xì)鐩墠瀹炵幇錛?br />聽聽聽聽聽 鍩虹被澧炲姞milk錛宻weet絳夊睘鎬э紝澧炲姞hasMilk錛宧asSweet絳夋柟娉曪紝cost()瀹炵幇鏃舵牴鎹甴asMilk()絳夊垽鏂綆椼?br />聽聽聽聽聽 闂錛?錛歝ondiments浠鋒牸鍙樺寲蹇呴』鏀瑰彉宸叉湁浠g爜銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽2錛氬鍔犳柊鐨刢ondiments蹇呴』淇敼鍩虹被銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽3錛氭妸鎵鏈塩ondiments閮戒綔涓哄熀綾葷殑灞炴т笉鍚堥傦紝鍥犱負(fù)涓嶆槸姣忎釜瀛愮被蹇呴』鐨勶紝姣斿鏌愪簺鍙兘涓嶉傚悎Tea絳夐ギ鏂欍?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 4錛氬鏋滈【瀹㈤渶瑕佸浠絚ondiments娌″姙娉曡綆椼?br />
涓夛細(xì)
聽聽聽聽 Design principal(open-close principal): Classes should be open for extension,but close for modification.
聽聽聽聽 The Decorator pattern :attaches additional responsibilities to a object dynamically.Decorator provide a flexible alternative to subclassing for extending functionality.
聽聽聽聽聽 鐜板疄鏂規(guī)硶錛?br />聽聽聽聽聽聽public abstract CondimentDecorator extends Beverage{}
聽聽聽聽聽
聽聽聽聽 public聽Mocha extends CondifmentDecorator{
聽聽聽聽聽聽聽聽 private聽Beverage beverage;
聽聽聽聽聽聽聽聽 public Mocha(Beverage聽 beverage){
聽聽聽聽聽聽聽聽聽聽聽聽 this.beverage=beverage;
聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 public float聽cost(){
聽聽聽聽聽聽聽聽聽聽聽return beverage.cost()+0.9;
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽 public String getDescription(){
聽聽聽聽聽聽聽聽聽 reuturn beverage.getDescription+" Mocha";
聽聽聽聽聽聽 }
聽聽聽 }
聽聽 //--client test
聽聽聽聽Beverage beverage=new HouseBlend();
聽聽聽 beverage=new Mocha(beverage);
聽聽聽 beverage=new Mocha(beverage);
聽聽聽 beverage=new Milk(beverage);
聽聽聽 System.out.println(beverage.getDescription()+beverage.cost());
聽聽聽聽 璇存槑錛?br />聽聽聽 1:decorators緇ф壙琚寘瑁呯殑綾葷殑鍩虹被錛屼笉鏄負(fù)浜?jiǎn)浠g爜閲嶇敤锛岃屾槸涓轟簡(jiǎn)鏈変竴涓浉鍚岀殑鍩虹被錛岃繖鏍峰寘瑁呬竴嬈′箣鍚庡叾鍩虹被榪樻槸琚寘瑁呯被鐨勫熀綾伙紝鎵浠ュ彲浠ョ戶緇寘瑁呫?br />聽聽聽 2:decorator鏈変竴涓鍖呰綾誨睘鎬э紝榪欐牱decorator鍦ㄨ鍖呰綾誨彇寰椾俊鎭悗鍦ㄥ仛澶勭悊銆?br />
鍥涳細(xì)when
聽聽聽聽 1:褰撻渶瑕佹墿灞曚竴涓被鐨勫姛鑳斤紝鎴栫粰涓涓被澧炲姞鏂扮殑behavior錛?br />聽聽聽聽聽2:闇瑕佸姩鎬佺粰涓涓璞″鍔犲姛鑳斤紝榪欎簺鍔熻兘鍙互鍐嶅姩鎬佺殑鎾ら攢銆?br />聽聽聽聽 3:闇瑕佸鍔犳湁涓浜涘熀鏈姛鑳界殑鎺掑垪緇勫悎鑰屼駭鐢熺殑闈炲父澶ч噺鐨勫姛鑳斤紝浠庤屼嬌緇ф壙鍏崇郴鍙樺緱涓嶇幇瀹炪?br />
浜旓細(xì)鐜板疄浣跨敤
聽聽聽聽 1:java I/O 綾伙細(xì)abstract component錛嶃婭nputStream錛宎bstract decorator錛嶃婩ilterInputStream,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 decorator錛嶃婤ufferInputStream錛孡ineNumberInputStream
聽聽聽聽 2:鏂囨湰榪囨護(hù)緋葷粺
聽聽聽聽

zhoumin 2006-03-28 08:26 鍙戣〃璇勮
]]>
Observerhttp://www.tkk7.com/zhoumin007/articles/37670.htmlzhouminzhouminMon, 27 Mar 2006 11:17:00 GMThttp://www.tkk7.com/zhoumin007/articles/37670.htmlhttp://www.tkk7.com/zhoumin007/comments/37670.htmlhttp://www.tkk7.com/zhoumin007/articles/37670.html#Feedback0http://www.tkk7.com/zhoumin007/comments/commentRss/37670.htmlhttp://www.tkk7.com/zhoumin007/services/trackbacks/37670.html涓錛歝ase context錛?br />聽聽聽聽 鏈変竴涓皵璞′俊鎭被WeatherData錛屽睘鎬у寘鎷瑃emperature錛宧umidity絳夛紝鐜版湁涓ょ鏄劇ずWeatherData鏁版嵁鐨勭被WeatherDataDisplay1鍜學(xué)eatherDataDisplay2錛屽綋WeatherData鐨勪俊鎭敼鍙樻椂錛岃繖涓や釜鏄劇ず鐨勭被涓殑鏁版嵁涔熸敼鍙橈紝緇存姢鎬ф柟闈紝鍙兘浼?xì)鏈壗W笁縐嶆樉紺烘柟娉曪紝鏌愪釜鏄劇ず綾誨彲浠ョ敵璇蜂笉鏍規(guī)嵁WeatherData鏁版嵁瀹炴椂鏀瑰彉銆?br />
浜岋細(xì)
聽聽聽聽鐩墠鐜版柟娉曪紝 WeatherData涓?
聽聽聽聽 public void measurementsChanged()
聽聽聽 {
聽聽聽聽聽聽聽聽 display1.update(getTemperature(),getHumidity());
聽聽聽聽聽聽聽聽 display2.update(getTemperature(),getHumidity());
聽聽聽 }聽
聽聽聽 浣嗘柟娉曚綋涓殑浠g爜鏄彲鑳戒細(xì)鍙樼殑錛屾湁display3鐨勬椂鍊欙紝蹇呴』寰椾慨鏀逛唬鐮併?br />涓夛細(xì)
聽聽聽聽 The Observer pattern錛歞efines a one-to-many dependency between objects so that when one object changes state,
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 all of its dependents are notified and updated automatically.

聽聽聽 姝ゆā寮忕被鍖呮嫭:聽 Subject 鎺ュ彛{registerObserver();removeObserver(),notifyObservers()}, Concrete Subject 綾?br />聽聽 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽 Observer鎺ュ彛{update();},聽 澶氫釜ConcreteObserver綾?display1,display2)銆?br />聽聽聽 public class WeatherData implements Subject
聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽private 聽List observerList;
聽聽聽聽聽聽聽聽聽聽聽private float temperature;
聽聽聽聽聽聽聽聽聽聽 private float humidity;

聽聽聽聽聽聽聽聽聽 public void registerObserver(Observer observer)
聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 observerList.add(observer);
聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽 public void notifyObjects()
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽 for (Iterator iter=objectList.iterator();iter.hasNext();)
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽 Observer observer=(Observer)iter.next();
聽聽聽聽聽聽聽聽聽聽 聽observer.update();
聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽 聽}
聽聽聽聽聽聽聽 public void changeData(float newTemperature)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽this.temperature=newTemperature;
聽聽聽聽聽聽聽聽聽聽聽聽聽 notifyObjects();
聽聽聽聽聽聽聽 }
聽聽聽 }
聽聽 //
聽聽聽 public class WeatherReport1 implements Observer{
聽聽 聽聽 private WeatherData weatherData;
聽聽聽 聽聽public WeatherReport1(WeatherData weatherData)
聽聽聽 聽{
聽聽聽聽聽聽聽聽this.weatherData=weatherData;
聽聽聽聽聽聽聽聽weatherData.registerObject(this);
聽聽聽聽}
聽聽聽聽public void update()聽
聽聽聽聽{
聽聽聽聽聽System.out.println("report1--now temperature is:"+weatherData.getTemperature());
聽聽聽聽}
聽 }
聽//瀹㈡埛绔祴璇曚唬鐮?br />聽public class Tester {
聽public static void main(String[] args) {
聽聽WeatherData weatherData=new WeatherData();
聽聽WeatherReport1 weatherReport1=new WeatherReport1(weatherData);
聽聽WeatherReport2 weatherReport2=new WeatherReport2(weatherData);
聽聽weatherData.changeData(10);
聽聽weatherData.removeObject(weatherReport1);
聽聽weatherData.changeData(20);
聽}
}
鍥涳細(xì)java璇█build-in鏀寔
聽聽聽聽聽聽 鍦╦ava.util.鍖呬腑
聽聽聽聽 Subject鎺ュ彛-->Observable 綾伙紙鎶奜bserver娉ㄥ唽錛宯otify絳夋柟娉曞疄鐜幫級(jí)
聽聽聽聽 Observer鎺ュ彛-->Observer鎺ュ彛
聽聽聽聽 緙虹偣錛歄bservable鏄竴涓被浣犲繀欏葷戶鎵垮畠錛屽鏋滆繕瑕佺戶鎵垮叾瀹冪被灝變笉琛屼簡(jiǎn)銆?br />聽聽聽聽聽鎵浠ュ鏋渏ava鍐呭緩鐨勭被涓嶉傚悎浣狅紝灝辨寜鎴戜滑涓婇潰鍐欑殑鑷繁閲嶅ご鍐欎竴涓?br />
浜旓細(xì)瀹炰緥
聽聽聽聽聽1: swing涓殑浜嬩歡澶勭悊錛?br />聽聽聽聽聽聽聽聽聽 button.addActionListener(new AL1);
聽聽聽聽聽聽聽聽聽 button.addActionListerner(new AL2);
聽聽聽聽聽聽聽聽聽 public void AL1 implements ActionListener{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 public void actionPerformed(Event e)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 {//---
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽 }

聽聽聽聽聽 2:搴旂敤緋葷粺涓紝璁㈤槄淇℃伅錛?br />聽聽聽聽聽聽聽聽 濡傛湁澶氫釜鐢ㄦ埛璁㈤槄鐨勮窡韙煇璁板綍鏇存柊淇℃伅銆?/p>

zhoumin 2006-03-27 19:17 鍙戣〃璇勮
]]>
Strategyhttp://www.tkk7.com/zhoumin007/articles/37629.htmlzhouminzhouminMon, 27 Mar 2006 08:24:00 GMThttp://www.tkk7.com/zhoumin007/articles/37629.htmlhttp://www.tkk7.com/zhoumin007/comments/37629.htmlhttp://www.tkk7.com/zhoumin007/articles/37629.html#Feedback0http://www.tkk7.com/zhoumin007/comments/commentRss/37629.htmlhttp://www.tkk7.com/zhoumin007/services/trackbacks/37629.html聽鐜拌璁′竴涓叧浜庨腑瀛愮殑緋葷粺錛屼竴涓娊璞$被Duck錛屾柟娉曚負(fù)quack(),swim(),abstract display()(鍏蜂綋瀛惵犅?綾誨疄鐜?銆傜幇闇姹備負(fù)鏈夐儴鍒嗙被鍨嬬殑楦瓙鍙互fly(),濡備綍瀹炵幇銆?br />聽聽 a:緇ф壙錛氭妸fly()鎻愬埌Duck綾諱腑錛屽彲瀹炵幇浠g爜澶嶇敤銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 闂錛氳繚鍙嶇戶鎵垮師鍒欙紝鐖剁被鐨勬柟娉曞繀欏繪槸鎵鏈夊瓙綾婚兘鍏鋒湁鐨勮涓猴紝浠g爜緇存姢 鏃跺鍔犲叆涓聽 縐嶆柊綾?鍨嬫湪澶撮腑灝辨病鏈塮ly()琛屼負(fù)銆?br />
聽 b:鎺ュ彛錛氬啓涓涓猣lyable鎺ュ彛錛屾墍鏈夋湁fly()琛屼負(fù)鐨勯腑瀛愰兘瀹炵幇榪欎釜鎺ュ彛銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 闂錛氫笉鑳藉疄鐜頒唬鐮佸鐢ㄣ?br />聽聽
2: 閲嶆柊鍒嗘瀽錛?br />聽聽聽 fly()琛屼負(fù)涓嶆槸姣忎釜瀛愮被閮芥湁錛宖ly()鐨勫叿浣撳疄鐜板彲鑳戒細(xì)鍙樺寲錛堟湁鐨勬槸鐢ㄧ繀鑶椋炶錛屾湁鐨勬槸婊戣錛?鎴栨槸鍏跺畠娌℃湁鍙戠幇鐨勬柟娉曪紝鎬諱箣瀹冩槸浼?xì)鍙樼殑锛坈hange錛宎dd錛夛級(jí)銆?br />聽聽聽 Design Principal錛欼dentify the aspects of your application that vary and seperate them from what stays the same銆?br />聽聽聽 錛坱ake the parts that vary and encapsulate them,so that later you can alter and extend the parts that vary without affecting those don't聽錛?br />聽聽 瑙e喅鏂規(guī)硶錛?br />聽聽聽聽聽聽聽聽聽 鍐橣lyBehavior鎺ュ彛錛屽拰涓や釜瀹炵幇綾籉lyWithWings鍜孎lyNoWay錛岃繖鏍鋒妸Fly鐨勮涓轟粠duck綾葷殑鍐呴儴鎻愪簡(jiǎn)鍑烘潵錛屾垜浠彲浠ヤ慨鏀瑰拰澧炲姞琛屼負(fù)鑰屼笉褰卞搷鍏跺畠浠g爜銆?br />聽聽聽聽聽聽聽聽聽 鎶奆lyBehavior瀹炰緥浣滀負(fù)Duck鐨勫睘鎬э紝瀛愮被鏋勯犳椂鍙互閫氳繃new FlyBehavior鐨勫疄鐜扮被璁劇疆姝ゅ睘鎬э紝錛堝洜涓篎lyBehavior鏄帴鍙o紝鎴戜滑鍙互鍦≧untime 鏀瑰彉瀹冿級(jí)錛岀劧鍚庡湪Duck鍐檖erformFly()瀹炵幇鏂規(guī)硶涓轟唬鐞唂lyBehavior.fly()銆?br />聽聽聽 Design Principal錛欶avor composition than inheirtance.
聽聽聽 (1:change behavior at runtime.2:encapsulate a family of algorithms into their own classes)

聽聽 Strategy pattern: define a family of algorithms,encapsulates each one,and make them interchangeable. Strategy lets the algorithm vary independently from the client that use it.

3:鐜板疄搴旂敤錛?br />聽聽 鍥句功鎵撴姌璁$畻錛氭湁澶氱鎵撴姌絳栫暐錛屾姌鎵e彲鑳戒細(xì)鍙樺姩鎴栧鍔犮?br />聽聽 鎺掑簭緋葷粺錛氬厛鍐欏嚭鍚勭鎺掑簭瀹炵幇錛屾牴鎹儏鍐靛姩鎬侀夋嫨鎺掑簭絳栫暐銆偮?

zhoumin 2006-03-27 16:24 鍙戣〃璇勮
]]>
璁捐妯″紡浠嬬粛http://www.tkk7.com/zhoumin007/articles/37516.htmlzhouminzhouminSun, 26 Mar 2006 15:51:00 GMThttp://www.tkk7.com/zhoumin007/articles/37516.htmlhttp://www.tkk7.com/zhoumin007/comments/37516.htmlhttp://www.tkk7.com/zhoumin007/articles/37516.html#Feedback0http://www.tkk7.com/zhoumin007/comments/commentRss/37516.htmlhttp://www.tkk7.com/zhoumin007/services/trackbacks/37516.htmlwhy?緇忓吀浼橀泤瑙e喅鏂瑰紡錛屼笉闇鑷繁鍐嶅幓璧板集璺?br />when錛熷厛瑕佺啛鎮(zhèn)夊熀鏈殑妯″紡錛岀啛緇冩椂灝辯煡閬撲粈涔堟椂鍊欒鐢紝浠涔堟椂鍊欎笉璇ョ敤銆?br />where?杞歡寮鍙戯紙闈㈠悜瀵硅薄璇█錛夛紝鐗瑰埆鏄簳灞傜郴緇熸鏋跺紑鍙戙?br />how錛坱o study it錛夛紵
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 瀛︿範(fàn)case
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 1:闇姹傦紙鍔熻兘錛屽彲緇存姢鎬э紝鍙墿灞曟э級(jí)
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 2:瑙e喅鏂規(guī)硶
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 瀹為檯搴旂敤錛氱敓媧諱緥瀛愶紝java綾誨簱錛宩ava緋葷粺

鍙傝冭祫鏂欙細(xì)銆奾ead first design pattern銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 銆妀ava 涓?妯″紡銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 jive 鐮旂┒

zhoumin 2006-03-26 23:51 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 免费国产a理论片| 羞羞漫画登录页面免费| 亚洲熟妇丰满xxxxx| 含羞草国产亚洲精品岁国产精品| 看Aⅴ免费毛片手机播放| 国产精品福利片免费看| 久久国产乱子伦精品免费一 | 亚洲一区二区三区免费| 日本免费污片中国特一级| 1000部拍拍拍18免费网站| 啦啦啦www免费视频| 国产精品亚洲视频| 久久精品国产亚洲av影院| 亚洲国产欧美一区二区三区| 国产成人无码免费网站| 五月亭亭免费高清在线| 国产男女猛烈无遮挡免费视频| 亚洲自偷自偷图片| 丁香婷婷亚洲六月综合色| 曰批免费视频播放免费| 1000部无遮挡拍拍拍免费视频观看| 成人免费无码大片A毛片抽搐色欲| 亚洲七七久久精品中文国产| 亚洲综合在线成人一区| 美女黄网站人色视频免费| 国产精品白浆在线观看免费| 丁香花在线观看免费观看| 丝袜熟女国偷自产中文字幕亚洲| 亚洲国产精品人久久电影| 色哟哟国产精品免费观看| 亚欧人成精品免费观看| 亚洲综合另类小说色区色噜噜| 亚洲美女中文字幕| 猫咪免费人成网站在线观看入口| 99国产精品视频免费观看| 免费一级做a爰片久久毛片潮喷| 内射干少妇亚洲69XXX| 污视频网站在线观看免费| 亚洲毛片免费视频| 亚洲一级特黄大片无码毛片| 国产亚洲福利在线视频|