锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久国产亚洲精品无码,麻豆亚洲AV成人无码久久精品 ,亚洲国产成人一区二区三区http://www.tkk7.com/RR00/category/2707.html涓嶈鍩嬪ご鑻﹀共錛岃瀛︿範(fàn)錛屽涔?fàn)锛屽啀瀛︿範(fàn)銆傘傘傘傘? <br> powered by <font color='orange'>R.Zeus</font>zh-cnThu, 06 Dec 2007 10:31:43 GMTThu, 06 Dec 2007 10:31:43 GMT60Proxy Patternhttp://www.tkk7.com/RR00/articles/165774.htmlR.ZeusR.ZeusThu, 06 Dec 2007 04:52:00 GMThttp://www.tkk7.com/RR00/articles/165774.htmlhttp://www.tkk7.com/RR00/comments/165774.htmlhttp://www.tkk7.com/RR00/articles/165774.html#Feedback0http://www.tkk7.com/RR00/comments/commentRss/165774.htmlhttp://www.tkk7.com/RR00/services/trackbacks/165774.html

R.Zeus 2007-12-06 12:52 鍙戣〃璇勮
]]>
Visitor 妯″紡http://www.tkk7.com/RR00/articles/96731.htmlR.ZeusR.ZeusTue, 30 Jan 2007 06:37:00 GMThttp://www.tkk7.com/RR00/articles/96731.htmlhttp://www.tkk7.com/RR00/comments/96731.htmlhttp://www.tkk7.com/RR00/articles/96731.html#Feedback0http://www.tkk7.com/RR00/comments/commentRss/96731.htmlhttp://www.tkk7.com/RR00/services/trackbacks/96731.htmlVisitor 妯″紡

Reference錛?br />聽聽聽1.http://www.javaworld.com/javaworld/javatips/jw-javatip98.html
聽聽聽2.http://www.theserverside.com/patterns/thread.tss?thread_id=43755
聽聽聽3.http://www.nshen.net/designpattern/DesignPattern/VisitorPattern.htm

R.Zeus 2007-01-30 14:37 鍙戣〃璇勮
]]>
mappings.setDefaultLazy(dlNode == null || dlNode.getValue().equals("true"));http://www.tkk7.com/RR00/articles/73081.htmlR.ZeusR.ZeusSat, 30 Sep 2006 10:07:00 GMThttp://www.tkk7.com/RR00/articles/73081.htmlhttp://www.tkk7.com/RR00/comments/73081.htmlhttp://www.tkk7.com/RR00/articles/73081.html#Feedback0http://www.tkk7.com/RR00/comments/commentRss/73081.htmlhttp://www.tkk7.com/RR00/services/trackbacks/73081.html1st:聽聽 mappings.setDefaultLazy(dlNode == null || dlNode.getValue().equals("true"));
2ed: mappings.setAutoImport((aiNode == null) ? true : "true".equals(aiNode.getValue()));

the first is seems a bit more effective than the second but less readable ,hence we choose the second!
bad聽programmer write code readed by machine and by contraries good programmer write code readed by human!

R.Zeus 2006-09-30 18:07 鍙戣〃璇勮
]]>
about callback and decorator patternhttp://www.tkk7.com/RR00/articles/72855.htmlR.ZeusR.ZeusFri, 29 Sep 2006 08:17:00 GMThttp://www.tkk7.com/RR00/articles/72855.htmlhttp://www.tkk7.com/RR00/comments/72855.htmlhttp://www.tkk7.com/RR00/articles/72855.html#Feedback0http://www.tkk7.com/RR00/comments/commentRss/72855.htmlhttp://www.tkk7.com/RR00/services/trackbacks/72855.htmldecorator is using when one object has may ways to do pre-init and finally work.

R.Zeus 2006-09-29 16:17 鍙戣〃璇勮
]]>
another method equals abstract factory method pattern http://www.tkk7.com/RR00/articles/72630.htmlR.ZeusR.ZeusThu, 28 Sep 2006 09:20:00 GMThttp://www.tkk7.com/RR00/articles/72630.htmlhttp://www.tkk7.com/RR00/comments/72630.htmlhttp://www.tkk7.com/RR00/articles/72630.html#Feedback0http://www.tkk7.com/RR00/comments/commentRss/72630.htmlhttp://www.tkk7.com/RR00/services/trackbacks/72630.htmlnested public static interface .
I found this when i read the org.hibernate.hql.ast.util.NodeTraverser.by the way,the command pattern is somewhat like those way.

R.Zeus 2006-09-28 17:20 鍙戣〃璇勮
]]>
Java IO 鍖呬腑鐨凞ecorator妯″紡 http://www.tkk7.com/RR00/articles/72594.htmlR.ZeusR.ZeusThu, 28 Sep 2006 07:34:00 GMThttp://www.tkk7.com/RR00/articles/72594.htmlhttp://www.tkk7.com/RR00/comments/72594.htmlhttp://www.tkk7.com/RR00/articles/72594.html#Feedback0http://www.tkk7.com/RR00/comments/commentRss/72594.htmlhttp://www.tkk7.com/RR00/services/trackbacks/72594.htmlJDK涓虹▼搴忓憳鎻愪緵浜?jiǎn)澶ч噺鐨劸c誨簱錛岃屼負(fù)浜?jiǎn)淇濇寔绫诲簱鐨勫彲閲嶇敤鎬э紝鍙墿灞曟у拰鐏墊椿鎬э紝鍏朵腑浣跨敤鍒頒簡(jiǎn)澶ч噺鐨勮璁℃ā寮忥紝鏈枃灝嗕粙緇岼DK鐨処/O鍖呬腑浣跨敤鍒扮殑Decorator妯″紡錛屽茍榪愮敤姝ゆā寮忥紝瀹炵幇涓涓柊鐨勮緭鍑烘祦綾匯?

銆銆Decorator妯″紡綆浠?

銆銆Decorator妯″紡鍙堝悕鍖呰鍣?Wrapper)錛屽畠鐨勪富瑕佺敤閫斿湪浜庣粰涓涓璞″姩鎬佺殑娣誨姞涓浜涢澶栫殑鑱岃矗銆備笌鐢熸垚瀛愮被鐩告瘮錛屽畠鏇村叿鏈夌伒媧繪с?br />鏈夋椂鍊欙紝鎴戜滑闇瑕佷負(fù)涓涓璞¤屼笉鏄暣涓被娣誨姞涓浜涙柊鐨勫姛鑳斤紝姣斿錛岀粰涓涓枃鏈尯娣誨姞涓涓粴鍔ㄦ潯鐨勫姛鑳姐傛垜浠彲浠ヤ嬌鐢ㄧ戶鎵挎満鍒舵潵瀹炵幇榪欎竴鍔熻兘錛屼絾鏄繖縐嶆柟娉曚笉澶熺伒媧伙紝鎴戜滑鏃犳硶鎺у埗鏂囨湰鍖哄姞婊氬姩鏉$殑鏂瑰紡鍜屾椂鏈恒傝屼笖褰撴枃鏈尯闇瑕佹坊鍔犳洿澶氱殑鍔熻兘鏃訛紝姣斿杈規(guī)絳夛紝闇瑕佸垱寤烘柊鐨勭被錛岃屽綋闇瑕佺粍鍚堜嬌鐢ㄨ繖浜涘姛鑳芥椂鏃犵枒灝嗕細(xì)寮曡搗綾葷殑鐖嗙偢銆?br />
銆銆鎴戜滑鍙互浣跨敤涓縐嶆洿涓虹伒媧葷殑鏂規(guī)硶錛屽氨鏄妸鏂囨湰鍖哄祵鍏ュ埌婊氬姩鏉′腑銆傝岃繖涓粴鍔ㄦ潯鐨勭被灝辯浉褰撲簬瀵規(guī)枃鏈尯鐨勪竴涓?strong>瑁呴グ銆傝繖涓楗?婊氬姩鏉?蹇呴』涓庤瑁呴グ鐨勭粍浠?鏂囨湰鍖?緇ф壙鑷悓涓涓帴鍙o紝榪欐牱錛岀敤鎴峰氨涓嶅繀鍏沖績(jī)瑁呴グ鐨勫疄鐜幫紝鍥犱負(fù)榪欏浠栦滑鏉ヨ鏄忔槑鐨勩傝楗頒細(xì)灝嗙敤鎴風(fēng)殑璇鋒眰杞彂緇欑浉搴旂殑緇勪歡(鍗寵皟鐢ㄧ浉鍏崇殑鏂規(guī)硶)錛屽茍鍙兘鍦ㄨ漿鍙戠殑鍓嶅悗鍋氫竴浜涢澶栫殑鍔ㄤ綔(濡傛坊鍔犳粴鍔ㄦ潯)銆傞氳繃榪欑鏂規(guī)硶錛屾垜浠彲浠ユ牴鎹粍鍚堝鏂囨湰鍖哄祵濂椾笉鍚岀殑瑁呴グ錛屼粠鑰屾坊鍔犱換鎰忓鐨勫姛鑳姐傝繖縐嶅姩鎬佺殑瀵瑰璞℃坊鍔犲姛鑳界殑鏂規(guī)硶涓嶄細(xì)寮曡搗綾葷殑鐖嗙偢錛屼篃鍏鋒湁浜?jiǎn)鏇村鐨勭亯|椿鎬с?br />
銆銆浠ヤ笂鐨勬柟娉曞氨鏄?strong>Decorator妯″紡錛屽畠閫氳繃緇欏璞℃坊鍔犺楗版潵鍔ㄦ佺殑娣誨姞鏂扮殑鍔熻兘銆傚涓嬫槸Decorator妯″紡鐨刄ML鍥撅細(xì)



銆銆Component涓虹粍浠跺拰瑁呴グ鐨勫叕鍏辯埗綾伙紝瀹冨畾涔変簡(jiǎn)瀛愮被蹇呴』瀹炵幇鐨勬柟娉曘?br />
銆銆ConcreteComponent鏄竴涓叿浣撶殑緇勪歡綾伙紝鍙互閫氳繃緇欏畠娣誨姞瑁呴グ鏉ュ鍔犳柊鐨勫姛鑳姐?br />
銆銆Decorator鏄墍鏈夎楗扮殑鍏叡鐖剁被錛屽畠瀹氫箟浜?jiǎn)鎵鏈夎楗板繀欏誨疄鐜扮殑鏂規(guī)硶錛屽悓鏃訛紝瀹冭繕淇濆瓨浜?jiǎn)涓涓浜嶤omponent鐨勫紩鐢紝浠ヤ究灝嗙敤鎴風(fēng)殑璇鋒眰杞彂緇機(jī)omponent錛屽茍鍙兘鍦ㄨ漿鍙戣姹傚墠鍚庢墽琛屼竴浜涢檮鍔犵殑鍔ㄤ綔銆?br />
銆銆ConcreteDecoratorA鍜孋oncreteDecoratorB鏄叿浣撶殑瑁呴グ錛屽彲浠ヤ嬌鐢ㄥ畠浠潵瑁呴グ鍏蜂綋鐨凜omponent銆?br />
銆銆Java IO鍖呬腑鐨凞ecorator妯″紡

銆銆JDK鎻愪緵鐨刯ava.io鍖呬腑浣跨敤浜?jiǎn)Decorator妯″紡鏉ュ疄鐜板鍚勭杈撳叆杈撳嚭嫻佺殑灝佽銆備互涓嬪皢浠ava.io.OutputStream鍙?qiáng)鍏跺瓙绫讳皋Z緥錛岃璁轟竴涓婦ecorator妯″紡鍦↖O涓殑浣跨敤銆?br />
銆銆棣栧厛鏉ョ湅涓孌電敤鏉ュ垱寤篒O嫻佺殑浠g爜錛?br />
浠ヤ笅鏄唬鐮佺墖孌碉細(xì)
try {
銆OutputStream out = new DataOutputStream(new FileOutputStream("test.txt"));
} catch (FileNotFoundException e) {
銆e.printStackTrace();
}
銆銆榪欐浠g爜瀵逛簬浣跨敤榪嘕AVA杈撳叆杈撳嚭嫻佺殑浜烘潵璇村啀鐔熸?zhèn)変笉杩囦簡(jiǎn)锛屾垜浠娇鐢―ataOutputStream灝佽浜?jiǎn)涓涓狥ileOutputStream銆傝繖鏄竴涓吀鍨嬬殑Decorator妯″紡鐨勪嬌鐢紝FileOutputStream鐩稿綋浜嶤omponent錛孌ataOutputStream灝辨槸涓涓狣ecorator銆傚皢浠g爜鏀規(guī)垚濡備笅錛屽皢浼?xì)鏇村?guī)槗鐞嗚В錛?br />
浠ヤ笅鏄唬鐮佺墖孌碉細(xì)
try {
銆OutputStream out = new FileOutputStream("test.txt");
銆out = new DataOutputStream(out);
} catch(FileNotFoundException e) {
銆e.printStatckTrace();
}
銆銆鐢變簬FileOutputStream鍜孌ataOutputStream鏈夊叕鍏辯殑鐖剁被OutputStream錛屽洜姝ゅ瀵硅薄鐨勮楗板浜庣敤鎴鋒潵璇村嚑涔庢槸閫忔槑鐨勩備笅闈㈠氨鏉ョ湅鐪婳utputStream鍙?qiáng)鍏跺瓙绫绘槸濡備綍鏋勬垚Decorator妯″紡鐨勶細(xì)



OutputStream鏄竴涓娊璞$被錛屽畠鏄墍鏈夎緭鍑烘祦鐨勫叕鍏辯埗綾伙紝鍏舵簮浠g爜濡備笅錛?

浠ヤ笅鏄唬鐮佺墖孌碉細(xì)
public abstract class OutputStream implements Closeable, Flushable {
public abstract void write(int b) throws IOException;
...
}

瀹冨畾涔変簡(jiǎn)write(int b)鐨勬娊璞℃柟娉曘傝繖鐩稿綋浜嶥ecorator妯″紡涓殑Component綾匯?

ByteArrayOutputStream錛孎ileOutputStream 鍜?PipedOutputStream 涓変釜綾婚兘鐩存帴浠嶰utputStream緇ф壙錛屼互ByteArrayOutputStream涓轟緥錛?

浠ヤ笅鏄唬鐮佺墖孌碉細(xì)
public class ByteArrayOutputStream extends OutputStream {
protected byte buf[];
protected int count;
public ByteArrayOutputStream() {
this(32);
}
public ByteArrayOutputStream(int size) {
if (size 銆?0) {
throw new IllegalArgumentException("Negative initial size: " + size);
}
buf = new byte[size];
}
public synchronized void write(int b) {
int newcount = count + 1;
if (newcount 銆?buf.length) {
byte newbuf[] = new byte[Math.max(buf.length 銆堛?1, newcount)];
System.arraycopy(buf, 0, newbuf, 0, count);
buf = newbuf;
}
buf[count] = (byte)b;
count = newcount;
}
...
}

瀹冨疄鐜頒簡(jiǎn)OutputStream涓殑write(int b)鏂規(guī)硶錛屽洜姝ゆ垜浠彲浠ョ敤鏉ュ垱寤鴻緭鍑烘祦鐨勫璞★紝騫跺畬鎴愮壒瀹氭牸寮忕殑杈撳嚭銆傚畠鐩稿綋浜嶥ecorator妯″紡涓殑ConcreteComponent綾匯?

鎺ョ潃鏉ョ湅涓涓婩ilterOutputStream錛屼唬鐮佸涓嬶細(xì)

浠ヤ笅鏄唬鐮佺墖孌碉細(xì)
public class FilterOutputStream extends OutputStream {
protected OutputStream out;
public FilterOutputStream(OutputStream out) {
this.out = out;
}
浠ヤ笅鏄唬鐮佺墖孌碉細(xì)
public class BufferedOutputStream extends FilterOutputStream {
...
private void flushBuffer() throws IOException {
if (count 銆?0) {
out.write(buf, 0, count);
count = 0;
}
}
public synchronized void write(int b) throws IOException {
if (count 銆? buf.length) {
flushBuffer();
}
buf[count++] = (byte)b;
}
...
}


銆銆榪欎釜綾繪彁渚涗簡(jiǎn)涓涓紦瀛樻満鍒訛紝絳夊埌緙撳瓨鐨勫閲忚揪鍒頒竴瀹氱殑瀛楄妭鏁版椂鎵嶅啓鍏ヨ緭鍑烘祦銆傞鍏堝畠緇ф壙浜?jiǎn)FilterOutputStream錛屽茍涓旇鐩栦簡(jiǎn)鐖剁被鐨剋rite(int b)鏂規(guī)硶錛屽湪璋冪敤杈撳嚭嫻佸啓鍑烘暟鎹墠閮戒細(xì)媯(gè)鏌ョ紦瀛樻槸鍚﹀凡婊★紝濡傛灉鏈弧錛屽垯涓嶅啓銆傝繖鏍峰氨瀹炵幇浜?jiǎn)瀵硅緭鍑簨箒瀵硅薄鍔ㄦ佺殑娣誨姞鏂板姛鑳界殑鐩殑銆?br />
銆銆涓嬮潰錛屽皢浣跨敤Decorator妯″紡錛屼負(fù)IO鍐欎竴涓柊鐨勮緭鍑烘祦銆?/p>

銆銆鑷繁鍐欎竴涓柊鐨勮緭鍑烘祦

銆銆浜?jiǎn)瑙d簡(jiǎn)OutputStream鍙?qiáng)鍏跺瓙绫荤殑缁撴瀯鍘熺悊鍚庡Q屾垜浠彲浠ュ啓涓涓柊鐨勮緭鍑烘祦錛屾潵娣誨姞鏂扮殑鍔熻兘銆傝繖閮ㄥ垎涓皢緇欏嚭涓涓柊鐨勮緭鍑烘祦鐨勪緥瀛愶紝瀹冨皢榪囨護(hù)寰呰緭鍑鴻鍙ヤ腑鐨勭┖鏍肩鍙楓傛瘮濡傞渶瑕佽緭鍑?java io OutputStream"錛屽垯榪囨護(hù)鍚庣殑杈撳嚭涓?javaioOutputStream"銆備互涓嬩負(fù)SkipSpaceOutputStream綾葷殑浠g爜錛?br />
浠ヤ笅鏄唬鐮佺墖孌碉細(xì)
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
/**
* A new output stream, which will check the space character
* and won鈥檛 write it to the output stream.
* @author Magic
*
*/
public class SkipSpaceOutputStream extends FilterOutputStream {
銆public SkipSpaceOutputStream(OutputStream out) {
銆銆super(out);
銆}
銆/**
銆* Rewrite the method in the parent class, and
銆* skip the space character.
銆*/
銆public void write(int b) throws IOException{
銆銆if(b!=鈥?鈥?{
銆銆銆super.write(b);
銆銆}
銆}
}
銆銆瀹冧粠FilterOutputStream緇ф壙錛屽茍涓旈噸鍐欎簡(jiǎn)瀹冪殑write(int b)鏂規(guī)硶銆傚湪write(int b)鏂規(guī)硶涓鍏堝杈撳叆瀛楃榪涜浜?jiǎn)妫鏌ワ紝濡傛灉涓嶆槸絀烘牸錛屽垯杈撳嚭銆?br />
銆銆浠ヤ笅鏄竴涓祴璇曠▼搴忥細(xì)

浠ヤ笅鏄唬鐮佺墖孌碉細(xì)
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* Test the SkipSpaceOutputStream.
* @author Magic
*
*/
public class Test {
銆public static void main(String[] args){
銆銆byte[] buffer = new byte[1024];

銆銆/**
銆銆* Create input stream from the standard input.
銆銆*/
銆銆InputStream in = new BufferedInputStream(new DataInputStream(System.in));

銆銆/**
銆銆* write to the standard output.
銆銆*/
銆銆OutputStream out = new SkipSpaceOutputStream(new DataOutputStream(System.out));

銆銆try {
銆銆銆System.out.println("Please input your words: ");
銆銆銆int n = in.read(buffer,0,buffer.length);
銆銆銆for(int i=0;i銆坣;i++){
銆銆銆銆out.write(buffer[i]);
銆銆銆}
銆銆} catch (IOException e) {
銆銆銆e.printStackTrace();
銆銆}
銆}
}
銆銆鎵ц浠ヤ笂嫻嬭瘯紼嬪簭錛屽皢瑕佹眰鐢ㄦ埛鍦╟onsole紿楀彛涓緭鍏ヤ俊鎭紝紼嬪簭灝嗚繃婊ゆ帀淇℃伅涓殑絀烘牸錛屽茍灝嗘渶鍚庣殑緇撴灉杈撳嚭鍒癱onsole紿楀彛銆傛瘮濡傦細(xì)

浠ヤ笅鏄紩鐢ㄧ墖孌碉細(xì)
Please input your words:
a b c d e f
abcdef
銆銆鎬?緇?/strong>

銆銆鍦╦ava.io鍖呬腑錛屼笉浠匫utputStream鐢ㄥ埌浜?jiǎn)Decorator璁捐妯″紡錛孖nputStream錛孯eader錛學(xué)riter絳夐兘鐢ㄥ埌浜?jiǎn)姝ゆā寮忋傝屼綔涓轟竴涓伒媧葷殑錛屽彲鎵╁睍鐨勭被搴擄紝JDK涓嬌鐢ㄤ簡(jiǎn)澶ч噺鐨勮璁℃ā寮忥紝姣斿鍦⊿wing鍖呬腑鐨凪VC妯″紡錛孯MI涓殑Proxy妯″紡絳夌瓑銆傚浜嶫DK涓ā寮忕殑鐮旂┒涓嶄粎鑳藉姞娣卞浜庢ā寮忕殑鐞嗚В錛岃屼笖榪樻湁鍒╀簬鏇撮忓交鐨勪簡(jiǎn)瑙g被搴撶殑緇撴瀯鍜岀粍鎴?br />
They are the same Obect basically.Decorator is base on the compent but beyond the compent.
Delegate is a bit like the Decorator.



R.Zeus 2006-09-28 15:34 鍙戣〃璇勮
]]>
bridge patternhttp://www.tkk7.com/RR00/articles/72581.htmlR.ZeusR.ZeusThu, 28 Sep 2006 07:02:00 GMThttp://www.tkk7.com/RR00/articles/72581.htmlhttp://www.tkk7.com/RR00/comments/72581.htmlhttp://www.tkk7.com/RR00/articles/72581.html#Feedback0http://www.tkk7.com/RR00/comments/commentRss/72581.htmlhttp://www.tkk7.com/RR00/services/trackbacks/72581.htmlI had understand so far that bridge pattern is just for two interface聽both has many implementors.articls always instruct following an abstract class that has complex extends and then change the abstract class to bridge class.at the first sight bridge is used to recover the ugly code but in deeply thought ,you may konw that聽 this pattern is for solveing one situation that two interface聽both has many implementors work together聽and use an abstract class聽as an bridge for the two interface because this pattern is聽safe to change any one interface and not affect the other,so bridge pattern is so flexible to expand.but if there is more than two interface,how did it do?






Bridge妯″紡瀹氫箟 :
灝嗘娊璞″拰琛屼負(fù)鍒掑垎寮鏉?鍚勮嚜鐙珛,浣嗚兘鍔ㄦ佺殑緇撳悎銆?/p>

浠諱綍浜嬬墿瀵硅薄閮芥湁鎶借薄鍜岃涓轟箣鍒嗭紝渚嬪浜猴紝浜烘槸涓縐嶆娊璞★紝浜哄垎鐢蜂漢鍜屽コ浜虹瓑錛涗漢鏈夎涓猴紝琛屼負(fù)涔熸湁鍚勭鍏蜂綋琛ㄧ幇錛屾墍浠ワ紝鈥滀漢鈥濅笌鈥滀漢鐨勮涓衡濅袱涓蹇典篃鍙嶆槧浜?jiǎn)鎶借薄鍜岃湄?fù)涔嬪垎銆?/p>

鍦ㄩ潰鍚戝璞¤璁$殑鍩烘湰姒傚康涓紝瀵硅薄榪欎釜姒傚康瀹為檯鏄敱灞炴у拰琛屼負(fù)涓や釜閮ㄥ垎緇勬垚鐨勶紝...


杞澆錛氳漿杞借淇濈暀鏈俊鎭紝鏈枃鏉ヨ嚜
http://www.51dibs.com/info15/i_c_51e22d63fdb3500b.htm
璁捐妯″紡涔婤ridge

Bridge妯″紡瀹氫箟 :
灝嗘娊璞″拰琛屼負(fù)鍒掑垎寮鏉?鍚勮嚜鐙珛,浣嗚兘鍔ㄦ佺殑緇撳悎銆?/p>

浠諱綍浜嬬墿瀵硅薄閮芥湁鎶借薄鍜岃涓轟箣鍒嗭紝渚嬪浜猴紝浜烘槸涓縐嶆娊璞★紝浜哄垎鐢蜂漢鍜屽コ浜虹瓑錛涗漢鏈夎涓猴紝琛屼負(fù)涔熸湁鍚勭鍏蜂綋琛ㄧ幇錛屾墍浠ワ紝鈥滀漢鈥濅笌鈥滀漢鐨勮涓衡濅袱涓蹇典篃鍙嶆槧浜?jiǎn)鎶借薄鍜岃湄?fù)涔嬪垎銆?/p>

鍦ㄩ潰鍚戝璞¤璁$殑鍩烘湰姒傚康涓紝瀵硅薄榪欎釜姒傚康瀹為檯鏄敱灞炴у拰琛屼負(fù)涓や釜閮ㄥ垎緇勬垚鐨勶紝灞炴ф垜浠彲浠ヨ涓烘槸涓縐嶉潤(rùn)姝㈢殑錛屾槸涓縐嶆娊璞★紝涓鑸儏鍐典笅錛岃涓烘槸鍖呭惈鍦ㄤ竴涓璞′腑錛屼絾鏄紝鍦ㄦ湁鐨勬儏鍐典笅錛屾垜浠渶瑕佸皢榪欎簺琛屼負(fù)涔熻繘琛屽綊綾伙紝褰㈡垚涓涓葷殑琛屼負(fù)鎺ュ彛錛岃繖灝辨槸妗ユā寮忕殑鐢ㄥ銆?/p>

涓轟粈涔堜嬌鐢?
涓嶅笇鏈涙娊璞¢儴鍒嗗拰琛屼負(fù)鏈変竴縐嶅浐瀹氱殑緇戝畾鍏崇郴錛岃屾槸搴旇鍙互鍔ㄦ佽仈緋葷殑銆?/p>

濡傛灉涓涓娊璞$被鎴栨帴鍙f湁澶氫釜鍏蜂綋瀹炵幇(瀛愮被銆乧oncrete subclass),榪欎簺瀛愮被涔嬮棿鍏崇郴鍙兘鏈変互涓嬩袱縐嶆儏鍐?
1. 榪欏涓瓙綾諱箣闂存蹇墊槸騫跺垪鐨?濡傚墠闈婦渚?鎵撴々,鏈変袱涓猚oncrete class:鏂瑰艦妗╁拰鍦嗗艦妗?榪欎袱涓艦鐘朵笂鐨勬々鏄茍鍒楃殑,娌℃湁姒傚康涓婄殑閲嶅銆?br />
2.榪欏涓瓙綾諱箣涓湁鍐呭姒傚康涓婇噸鍙?閭d箞闇瑕佹垜浠妸鎶借薄鍏卞悓閮ㄥ垎鍜岃涓哄叡鍚岄儴鍒嗗悇鑷嫭绔嬪紑鏉?鍘熸潵鏄噯澶囨斁鍦ㄤ竴涓帴鍙i噷,鐜板湪闇瑕佽璁′袱涓帴鍙o細(xì)鎶借薄鎺ュ彛鍜岃涓烘帴鍙o紝鍒嗗埆鏀劇疆鎶借薄鍜岃涓?

渚嬪,涓鏉挅鍟′負(fù)渚?瀛愮被瀹炵幇綾諱負(fù)鍥涗釜錛氫腑鏉姞濂躲佸ぇ鏉姞濂躲?涓澂涓嶅姞濂躲佸ぇ鏉笉鍔犲ザ銆?/p>

浣嗘槸錛屾垜浠敞鎰忓埌錛氫笂闈㈠洓涓瓙綾諱腑鏈夋蹇甸噸鍙狅紝鍙粠鍙﹀涓涓搴﹁繘琛岃冭檻錛岃繖鍥涗釜綾誨疄闄呮槸涓や釜瑙掕壊鐨勭粍鍚堬細(xì)鎶借薄 鍜岃涓猴紝鍏朵腑鎶借薄涓猴細(xì)涓澂鍜屽ぇ鏉紱琛屼負(fù)涓猴細(xì)鍔犲ザ 涓嶅姞濂訛紙濡傚姞姍欐眮 鍔犺嫻鏋滄眮錛?

瀹炵幇鍥涗釜瀛愮被鍦ㄦ娊璞″拰琛屼負(fù)涔嬮棿鍙戠敓浜?jiǎn)鍥哄畾鐨劸l戝畾鍏崇郴錛屽鏋滀互鍚庡姩鎬佸鍔犲姞钁¤悇姹佺殑琛屼負(fù)錛屽氨蹇呴』鍐嶅鍔犱袱涓被錛氫腑鏉姞钁¤悇姹佸拰澶ф澂鍔犺憽钀勬眮銆傛樉鐒舵販涔?鎵╁睍鎬ф瀬宸?/p>

閭f垜浠粠鍒嗙鎶借薄鍜岃涓虹殑瑙掑害錛屼嬌鐢˙ridge妯″紡鏉ュ疄鐜般?/p>

濡備綍瀹炵幇?
浠ヤ笂闈㈡彁鍒扮殑鍜栧暋 涓轟緥. 鎴戜滑鍘熸潵鎵撶畻鍙璁′竴涓帴鍙?鎶借薄綾?,浣跨敤Bridge妯″紡鍚?鎴戜滑闇瑕佸皢鎶借薄鍜岃涓哄垎寮,鍔犲ザ鍜屼笉鍔犲ザ灞炰簬琛屼負(fù),鎴戜滑灝嗗畠浠娊璞℃垚涓涓笓闂ㄧ殑琛屼負(fù)鎺ュ彛.

鍏堢湅鐪嬫娊璞¢儴鍒嗙殑鎺ュ彛浠g爜:

public abstract class Coffee
{
銆銆CoffeeImp coffeeImp;

銆銆public void setCoffeeImp() {
銆銆銆銆this.CoffeeImp = CoffeeImpSingleton.getTheCoffeImp();
銆銆}

銆銆public CoffeeImp getCoffeeImp() {return this.CoffeeImp;}

銆銆public abstract void pourCoffee();
}

鍏朵腑CoffeeImp 鏄姞涓嶅姞濂剁殑琛屼負(fù)鎺ュ彛,鐪嬪叾浠g爜濡備笅:

public abstract class CoffeeImp
{
銆銆public abstract void pourCoffeeImp();
}

鐜板湪鎴戜滑鏈変簡(jiǎn)涓や釜鎶借薄綾?涓嬮潰鎴戜滑鍒嗗埆瀵瑰叾榪涜緇ф壙,瀹炵幇concrete class:

//涓澂
public class MediumCoffee extends Coffee
{
銆銆public MediumCoffee() {setCoffeeImp();}

銆銆public void pourCoffee()
銆銆{
銆銆銆銆CoffeeImp coffeeImp = this.getCoffeeImp();
銆銆銆銆//鎴戜滑浠ラ噸澶嶆鏁版潵璇存槑鏄啿涓澂榪樻槸澶ф澂 ,閲嶅2嬈℃槸涓澂
銆銆銆銆for (int i = 0; i < 2; i++)
銆銆銆銆{

銆銆銆銆銆銆coffeeImp.pourCoffeeImp();
銆銆銆銆}
銆銆
銆銆}
}

//澶ф澂
public class SuperSizeCoffee extends Coffee
{
銆銆public SuperSizeCoffee() {setCoffeeImp();}

銆銆public void pourCoffee()
銆銆{
銆銆銆銆CoffeeImp coffeeImp = this.getCoffeeImp();
銆銆銆銆//鎴戜滑浠ラ噸澶嶆鏁版潵璇存槑鏄啿涓澂榪樻槸澶ф澂 ,閲嶅5嬈℃槸澶ф澂
銆銆銆銆for (int i = 0; i < 5; i++)
銆銆銆銆{

銆銆銆銆銆銆coffeeImp.pourCoffeeImp();
銆銆銆銆}
銆銆
銆銆}
}

涓婇潰鍒嗗埆鏄腑鏉拰澶ф澂鐨勫叿浣撳疄鐜?涓嬮潰鍐嶅琛屼負(fù)CoffeeImp榪涜緇ф壙:

//鍔犲ザ
public class MilkCoffeeImp extends CoffeeImp
{
銆銆MilkCoffeeImp() {}

銆銆public void pourCoffeeImp()
銆銆{
銆銆銆銆System.out.println("鍔犱簡(jiǎn)緹庡懗鐨勭墰濂?);
銆銆}
}

//涓嶅姞濂?br />public class FragrantCoffeeImp extends CoffeeImp
{
銆銆FragrantCoffeeImp() {}

銆銆public void pourCoffeeImp()
銆銆{
銆銆銆銆System.out.println("浠涔堜篃娌″姞,娓呴");
銆銆}
}

Bridge妯″紡鐨勫熀鏈鏋舵垜浠凡緇忔惌濂戒簡(jiǎn),鍒繕璁板畾涔変腑榪樻湁涓鍙?鍔ㄦ佺粨鍚?鎴戜滑鐜板湪鍙互鍠濆埌鑷沖皯鍥涚鍜栧暋:
1.涓澂鍔犲ザ
2.涓澂涓嶅姞濂?br />3.澶ф澂鍔犲ザ
4.澶ф澂涓嶅姞濂?/p>

鐪嬬湅鏄浣曞姩鎬佺粨鍚堢殑,鍦ㄤ嬌鐢ㄤ箣鍓?鎴戜滑鍋氫釜鍑嗗宸ヤ綔,璁捐涓涓崟鎬佺被(Singleton)鐢ㄦ潵hold褰撳墠鐨凜offeeImp:

public class CoffeeImpSingleton
{
銆銆private static CoffeeImp coffeeImp;

銆銆public CoffeeImpSingleton(CoffeeImp coffeeImpIn)
銆銆 {this.coffeeImp = coffeeImpIn;}

銆銆public static CoffeeImp getTheCoffeeImp()
銆銆{
銆銆銆銆return coffeeImp;
銆銆}
}

鐪嬬湅涓澂鍔犲ザ 鍜屽ぇ鏉姞濂?鏄庝箞鍑烘潵鐨?

//鎷垮嚭鐗涘ザ
CoffeeImpSingleton coffeeImpSingleton = new CoffeeImpSingleton(new MilkCoffeeImp());

//涓澂鍔犲ザ
MediumCoffee mediumCoffee = new MediumCoffee();
mediumCoffee.pourCoffee();

//澶ф澂鍔犲ザ
SuperSizeCoffee superSizeCoffee = new SuperSizeCoffee();
superSizeCoffee.pourCoffee();

娉ㄦ剰: Bridge妯″紡鐨勬墽琛岀被濡侰offeeImp鍜孋offee鏄竴瀵逛竴鐨勫叧緋? 姝g‘鍒涘緩CoffeeImp鏄妯″紡鐨勫叧閿?

Bridge妯″紡鍦‥JB涓殑搴旂敤
EJB涓湁涓涓狣ata Access Object (DAO)妯″紡,榪欐槸灝嗗晢涓氶昏緫鍜屽叿浣撴暟鎹祫婧愬垎寮鐨?鍥犱負(fù)涓嶅悓鐨勬暟鎹簱鏈変笉鍚岀殑鏁版嵁搴撴搷浣?灝嗘搷浣滀笉鍚屾暟鎹簱鐨勮涓虹嫭绔嬫娊璞℃垚涓涓涓烘帴鍙AO.濡備笅:

1.Business Object (綾諱技Coffee)

瀹炵幇涓浜涙娊璞$殑鍟嗕笟鎿嶄綔:濡傚鎵句竴涓敤鎴蜂笅鎵鏈夌殑璁㈠崟

娑夊強(qiáng)鏁版嵁搴撴搷浣滈兘浣跨敤DAOImplementor.

2.Data Access Object (綾諱技CoffeeImp)

涓浜涙娊璞$殑瀵規(guī)暟鎹簱璧勬簮鎿嶄綔

3.DAOImplementor 濡侽rderDAOCS, OrderDAOOracle, OrderDAOSybase(綾諱技MilkCoffeeImp FragrantCoffeeImp)

鍏蜂綋鐨勬暟鎹簱鎿嶄綔,濡?INSERT INTO "絳夎鍙?OrderDAOOracle鏄疧racle OrderDAOSybase鏄疭ybase鏁版嵁搴?

4.鏁版嵁搴?(Cloudscape, Oracle, or Sybase database via JDBC API)



R.Zeus 2006-09-28 15:02 鍙戣〃璇勮
]]>
adapter 妯″紡http://www.tkk7.com/RR00/articles/72577.htmlR.ZeusR.ZeusThu, 28 Sep 2006 06:33:00 GMThttp://www.tkk7.com/RR00/articles/72577.htmlhttp://www.tkk7.com/RR00/comments/72577.htmlhttp://www.tkk7.com/RR00/articles/72577.html#Feedback0http://www.tkk7.com/RR00/comments/commentRss/72577.htmlhttp://www.tkk7.com/RR00/services/trackbacks/72577.html
鎺ュ彛shape 鐨勬柟娉晄etShape().濡傛灉鎯蟲柊寤轟竴涓猻hape: textShape,榪欎釜textShape寰堝鏉?紕板閥浠ュ墠鍐欒繃涓涓猅extView綾誨叿澶噒extShape鐨勬墍鏈夊姛鑳?浣嗘槸TextView寰堟槑鏄炬病鏈夊疄鐜?implements)shape鎺ュ彛(寰堝鏂囩珷璁や負(fù)鎺ュ彛涓嶄竴鑷?鎺ュ彛涓鑷翠篃涓嶈兘鐩存帴鐢?瀹炵幇鎵嶈兘鐩存帴浣跨敤.涓嶄竴鑷存槸涓緢妯$硦鐨勬蹇?.鎵浠ヨ繖鏃墮渶瑕佷嬌鐢╝dapter妯″紡.
//implements shape
//緇ф壙TextView鎴栬呯敤緇勫悎
public class textShape extends TextView implements shape
{
聽聽聽 setShape()
聽聽聽{
聽聽聽聽聽聽super.setTextSape();//榪欓噷璋冪敤TextView瀹屾垚鍔熻兘!杈懼埌adapter鐨勭洰鐨?
聽聽聽}
}

R.Zeus 2006-09-28 14:33 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 久久综合AV免费观看| 中文字幕的电影免费网站| 99久久免费精品视频| 亚洲VA成无码人在线观看天堂| 国产黄片不卡免费| 国产亚洲情侣一区二区无码AV| 日本亚洲中午字幕乱码| 午夜a级成人免费毛片| 亚洲va中文字幕| 可以免费观看的一级毛片| 免费手机在线看片| 亚洲国产一级在线观看| 久久国产福利免费| 亚洲AV无码一区二区乱子伦| 91香焦国产线观看看免费| 亚洲国产成人在线视频| 毛片免费在线观看网站| 噜噜噜亚洲色成人网站| 亚洲AⅤ永久无码精品AA| 中文在线观看国语高清免费| 亚洲成AV人片在线播放无码| 无码免费一区二区三区免费播放 | 污视频网站免费观看| 亚洲精品网站在线观看不卡无广告| 尤物视频在线免费观看| 日本亚洲欧洲免费天堂午夜看片女人员 | 免费久久人人爽人人爽av| 亚洲欧洲日产国码久在线观看| 中文毛片无遮挡高潮免费| 97久久国产亚洲精品超碰热| 一个人免费观看www视频在线| 亚洲欧洲无码一区二区三区| 亚洲乱码中文字幕手机在线| 无码国产精品一区二区免费vr| 亚洲国产精品久久网午夜| jizzjizz亚洲| 91久久精品国产免费一区| 国产99久久亚洲综合精品| 久热综合在线亚洲精品| 日本免费人成黄页在线观看视频| 国产精品无码永久免费888|