锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲免费人成在线视频观看,亚洲AV无码国产精品色午友在线,久久精品国产亚洲AV天海翼http://www.tkk7.com/RR00/category/2707.html涓嶈鍩嬪ご鑻﹀共錛岃瀛︿範錛屽涔狅紝鍐嶅涔犮傘傘傘傘? <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涓虹▼搴忓憳鎻愪緵浜嗗ぇ閲忕殑綾誨簱錛岃屼負浜嗕繚鎸佺被搴撶殑鍙噸鐢ㄦэ紝鍙墿灞曟у拰鐏墊椿鎬э紝鍏朵腑浣跨敤鍒頒簡澶ч噺鐨勮璁℃ā寮忥紝鏈枃灝嗕粙緇岼DK鐨処/O鍖呬腑浣跨敤鍒扮殑Decorator妯″紡錛屽茍榪愮敤姝ゆā寮忥紝瀹炵幇涓涓柊鐨勮緭鍑烘祦綾匯?

銆銆Decorator妯″紡綆浠?

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



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

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



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

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

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

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

浠ヤ笅鏄唬鐮佺墖孌碉細
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;
}
...
}

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

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

浠ヤ笅鏄唬鐮佺墖孌碉細
public class FilterOutputStream extends OutputStream {
protected OutputStream out;
public FilterOutputStream(OutputStream out) {
this.out = out;
}
浠ヤ笅鏄唬鐮佺墖孌碉細
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;
}
...
}


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

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

銆銆浜嗚В浜哋utputStream鍙婂叾瀛愮被鐨勭粨鏋勫師鐞嗗悗錛屾垜浠彲浠ュ啓涓涓柊鐨勮緭鍑烘祦錛屾潵娣誨姞鏂扮殑鍔熻兘銆傝繖閮ㄥ垎涓皢緇欏嚭涓涓柊鐨勮緭鍑烘祦鐨勪緥瀛愶紝瀹冨皢榪囨護寰呰緭鍑鴻鍙ヤ腑鐨勭┖鏍肩鍙楓傛瘮濡傞渶瑕佽緭鍑?java io OutputStream"錛屽垯榪囨護鍚庣殑杈撳嚭涓?javaioOutputStream"銆備互涓嬩負SkipSpaceOutputStream綾葷殑浠g爜錛?br />
浠ヤ笅鏄唬鐮佺墖孌碉細
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緇ф壙錛屽茍涓旈噸鍐欎簡瀹冪殑write(int b)鏂規(guī)硶銆傚湪write(int b)鏂規(guī)硶涓鍏堝杈撳叆瀛楃榪涜浜嗘鏌ワ紝濡傛灉涓嶆槸絀烘牸錛屽垯杈撳嚭銆?br />
銆銆浠ヤ笅鏄竴涓祴璇曠▼搴忥細

浠ヤ笅鏄唬鐮佺墖孌碉細
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紿楀彛銆傛瘮濡傦細

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

銆銆鍦╦ava.io鍖呬腑錛屼笉浠匫utputStream鐢ㄥ埌浜咲ecorator璁捐妯″紡錛孖nputStream錛孯eader錛學riter絳夐兘鐢ㄥ埌浜嗘妯″紡銆傝屼綔涓轟竴涓伒媧葷殑錛屽彲鎵╁睍鐨勭被搴擄紝JDK涓嬌鐢ㄤ簡澶ч噺鐨勮璁℃ā寮忥紝姣斿鍦⊿wing鍖呬腑鐨凪VC妯″紡錛孯MI涓殑Proxy妯″紡絳夌瓑銆傚浜嶫DK涓ā寮忕殑鐮旂┒涓嶄粎鑳藉姞娣卞浜庢ā寮忕殑鐞嗚В錛岃屼笖榪樻湁鍒╀簬鏇撮忓交鐨勪簡瑙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妯″紡瀹氫箟 :
灝嗘娊璞″拰琛屼負鍒掑垎寮鏉?鍚勮嚜鐙珛,浣嗚兘鍔ㄦ佺殑緇撳悎銆?/p>

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

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


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

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

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

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

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

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

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

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

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

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

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

鍏堢湅鐪嬫娊璞¢儴鍒嗙殑鎺ュ彛浠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 鏄姞涓嶅姞濂剁殑琛屼負鎺ュ彛,鐪嬪叾浠g爜濡備笅:

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

鐜板湪鎴戜滑鏈変簡涓や釜鎶借薄綾?涓嬮潰鎴戜滑鍒嗗埆瀵瑰叾榪涜緇ф壙,瀹炵幇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();
銆銆銆銆}
銆銆
銆銆}
}

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

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

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

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

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

Bridge妯″紡鐨勫熀鏈鏋舵垜浠凡緇忔惌濂戒簡,鍒繕璁板畾涔変腑榪樻湁涓鍙?鍔ㄦ佺粨鍚?鎴戜滑鐜板湪鍙互鍠濆埌鑷沖皯鍥涚鍜栧暋:
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)妯″紡,榪欐槸灝嗗晢涓氶昏緫鍜屽叿浣撴暟鎹祫婧愬垎寮鐨?鍥犱負涓嶅悓鐨勬暟鎹簱鏈変笉鍚岀殑鏁版嵁搴撴搷浣?灝嗘搷浣滀笉鍚屾暟鎹簱鐨勮涓虹嫭绔嬫娊璞℃垚涓涓涓烘帴鍙AO.濡備笅:

1.Business Object (綾諱技Coffee)

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

娑夊強鏁版嵁搴撴搷浣滈兘浣跨敤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鎺ュ彛(寰堝鏂囩珷璁や負鎺ュ彛涓嶄竴鑷?鎺ュ彛涓鑷翠篃涓嶈兘鐩存帴鐢?瀹炵幇鎵嶈兘鐩存帴浣跨敤.涓嶄竴鑷存槸涓緢妯$硦鐨勬蹇?.鎵浠ヨ繖鏃墮渶瑕佷嬌鐢╝dapter妯″紡.
//implements shape
//緇ф壙TextView鎴栬呯敤緇勫悎
public class textShape extends TextView implements shape
{
聽聽聽 setShape()
聽聽聽{
聽聽聽聽聽聽super.setTextSape();//榪欓噷璋冪敤TextView瀹屾垚鍔熻兘!杈懼埌adapter鐨勭洰鐨?
聽聽聽}
}

R.Zeus 2006-09-28 14:33 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 一级做a爰片性色毛片免费网站| 亚洲狠狠成人综合网| 美女黄频免费网站| 免费毛片在线播放| 亚洲欧美国产国产综合一区 | 亚洲韩国精品无码一区二区三区 | 在线看片免费人成视久网| 亚洲AV日韩AV鸥美在线观看| 国产午夜不卡AV免费| 亚洲av无码一区二区乱子伦as | 夜夜嘿视频免费看| 亚洲日本va一区二区三区| 好男人看视频免费2019中文| 亚洲日韩AV无码一区二区三区人| 午夜神器成在线人成在线人免费 | 无码人妻久久一区二区三区免费 | 亚洲中文字幕AV每天更新| 国产精品免费看久久久久| 在线观看亚洲网站| 久久久久亚洲AV成人网| 99久久国产精品免费一区二区| 伊人久久综在合线亚洲2019| 久久精品免费一区二区喷潮| 亚洲爆乳成av人在线视菜奈实| 亚洲精品一级无码鲁丝片| 久久精品成人免费看| 午夜在线a亚洲v天堂网2019| 日本免费中文字幕在线看| 羞羞视频在线观看免费| 亚洲男人天堂av| 国产资源免费观看| a视频在线观看免费| 亚洲一区在线观看视频| 免费毛片在线播放| 男女作爱在线播放免费网站| 自拍偷区亚洲国内自拍| 国产亚洲精久久久久久无码77777| 91视频免费网址| 曰批免费视频播放在线看片二| 久久夜色精品国产亚洲AV动态图| 拍拍拍又黄又爽无挡视频免费|