锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品私拍国产福利在线,国产gv天堂亚洲国产gv刚刚碰,国外亚洲成AV人片在线观看http://m.tkk7.com/Swing/category/23464.html<font size="3"><br><font color="#ff6600">澶╄鍋? 鍚涘瓙浠ヨ嚜寮轟笉鎭?lt;/font><br><br></font>zh-cnThu, 21 Jun 2007 19:54:38 GMTThu, 21 Jun 2007 19:54:38 GMT60璁捐妯″紡錛氱粨鏋勬ā寮忎箣Bridgehttp://m.tkk7.com/Swing/articles/121850.htmlSunSunMon, 04 Jun 2007 07:33:00 GMThttp://m.tkk7.com/Swing/articles/121850.htmlhttp://m.tkk7.com/Swing/comments/121850.htmlhttp://m.tkk7.com/Swing/articles/121850.html#Feedback0http://m.tkk7.com/Swing/comments/commentRss/121850.htmlhttp://m.tkk7.com/Swing/services/trackbacks/121850.html鍔熻兘鐨勭被灞傛錛欰瀹炵幇浜嗕竴浜涘姛鑳?瑕佹墿灞旳灝辯戶鎵跨敓鎴愪竴涓猘 榪欑涓轟簡鏂板鍔熻兘鑰屽緩绔嬬殑綾誨眰嬈$О涓哄姛鑳界殑綾誨眰嬈?br>瀹炵幇鐨勭被灞傛錛氭娊璞$被AB  ab綾誨疄鐜癆B綾?榪欓噷涓嶆槸涓轟簡鏂板鍔熻兘 榪欑縐頒負瀹炵幇鐨勭被灞傛
渚嬪,涓鏉挅鍟′負渚?鏈変腑鏉拰澶ф澂涔嬪垎,鍚屾椂榪樻湁鍔犲ザ 涓嶅姞濂朵箣鍒? 濡傛灉鐢ㄥ崟綰殑緇ф壙,榪欏洓涓叿浣撳疄鐜?涓澂 澶ф澂 鍔犲ザ 涓嶅姞濂?涔嬮棿鏈夋蹇甸噸鍙?鍥犱負鏈変腑鏉姞濂?涔熸湁涓澂涓嶅姞濂? 濡傛灉鍐嶅湪涓澂榪欎竴灞傚啀瀹炵幇涓や釜緇ф壙,寰堟樉鐒舵販涔?鎵╁睍鎬ф瀬宸?閭f垜浠嬌鐢˙ridge妯″紡鏉ュ疄鐜板畠. 
濡備綍瀹炵幇?
浠ヤ笂闈㈡彁鍒扮殑鍜栧暋 涓轟緥. 鎴戜滑鍘熸潵鎵撶畻鍙璁′竴涓帴鍙?鎶借薄綾?,浣跨敤Bridge妯″紡鍚?鎴戜滑闇瑕佸皢鎶借薄鍜岃涓哄垎寮,鍔犲ザ鍜屼笉鍔犲ザ灞炰簬琛屼負,鎴戜滑灝嗗畠浠娊璞℃垚涓涓笓闂ㄧ殑琛屼負鎺ュ彛.
紼嬪簭涓句緥錛?br>

鍏堢湅鐪嬫娊璞¢儴鍒嗙殑鎺ュ彛浠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();
}

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

涓婇潰鍒嗗埆鏄腑鏉拰澶ф澂鐨勫叿浣撳疄鐜?span lang=EN-US>.涓嬮潰鍐嶅琛屼負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.澶ф澂涓嶅姞濂?o:p>

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

public class CoffeeImpSingleton
{
銆銆private static CoffeeImp coffeeImp;

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

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

鐪嬬湅涓澂鍔犲ザ 鍜屽ぇ鏉姞濂?鏄庝箞鍑烘潵鐨?span lang=EN-US>:

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

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

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

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



Sun 2007-06-04 15:33 鍙戣〃璇勮
]]>
璁捐妯″紡錛氱粨鏋勬ā寮忎箣Decorator(娌規紗宸?http://m.tkk7.com/Swing/articles/121844.htmlSunSunMon, 04 Jun 2007 07:09:00 GMThttp://m.tkk7.com/Swing/articles/121844.htmlhttp://m.tkk7.com/Swing/comments/121844.htmlhttp://m.tkk7.com/Swing/articles/121844.html#Feedback0http://m.tkk7.com/Swing/comments/commentRss/121844.htmlhttp://m.tkk7.com/Swing/services/trackbacks/121844.htmlDecorator瀹氫箟:
鍔ㄦ佺粰涓涓璞℃坊鍔犱竴浜涢澶栫殑鑱岃矗,灝辮薄鍦ㄥ涓婂埛娌規紗.浣跨敤Decorator妯″紡鐩告瘮鐢ㄧ敓鎴愬瓙綾繪柟寮忚揪鍒板姛鑳界殑鎵╁厖鏄懼緱鏇翠負鐏墊椿.

涓轟粈涔堜嬌鐢?span lang=EN-US>Decorator?
鎴戜滑閫氬父鍙互浣跨敤緇ф壙鏉ュ疄鐜板姛鑳界殑鎷撳睍,濡傛灉榪欎簺闇瑕佹嫇灞曠殑鍔熻兘鐨勭綾誨緢綣佸,閭d箞鍔垮繀鐢熸垚寰堝瀛愮被,澧炲姞緋葷粺鐨勫鏉傛?鍚屾椂,浣跨敤緇ф壙瀹炵幇鍔熻兘鎷撳睍,鎴戜滑蹇呴』鍙瑙佽繖浜涙嫇灞曞姛鑳?榪欎簺鍔熻兘鏄紪璇戞椂灝辯‘瀹氫簡,鏄潤鎬佺殑.

浣跨敤Decorator鐨勭悊鐢辨槸:榪欎簺鍔熻兘闇瑕佺敱鐢ㄦ埛鍔ㄦ佸喅瀹氬姞鍏ョ殑鏂瑰紡鍜屾椂鏈?Decorator鎻愪緵浜?鍗蟲彃鍗崇敤"鐨勬柟娉?鍦ㄨ繍琛屾湡闂村喅瀹氫綍鏃跺鍔犱綍縐嶅姛鑳?

紼嬪簭涓句緥錛?br>Display.java:
public abstract class Display {
 public abstract int getColumns(); // 鍙栧緱妯悜鐨勫瓧鏁?/p>

 public abstract int getRows(); // 鍙栧緱鐩村悜鐨勮鏁?/p>

 public abstract String getRowText(int row); // 鍙栧緱絎瑀ow涓瓧涓?/p>

 public final void show() { // 鎵撳嵃鎵鏈夊収瀹?br>  for (int i = 0; i < getRows(); i++) {
   System.out.println(getRowText(i));
  }
 }
}
Border .java:
public abstract class Border extends Display {
    protected Display display;          // 鎸囪楗板妗嗛噷闈㈢殑銆屽収瀹廣?顛?
    protected Border(Display display) { // 鍦ㄤ駭鐢熷璞″疄渚嬫椂錛屼互鍙傛暟鎸囧畾銆屽収瀹廣?br>        this.display = display;
    }
}

StringDisplay .java:
public class StringDisplay extends Display {
 private String string; // 鎵撳嵃鐨勫瓧涓?

 public StringDisplay(String string) { // 浠ュ弬鏁版寚瀹氭墦鍗扮殑瀛椾覆
  this.string = string;
 }

 public int getColumns() { // 瀛楁暟
  return string.getBytes().length;
 }

 public int getRows() { // 琛屾暟涓?
  return 1;
 }

 public String getRowText(int row) { // 浠呭湪row涓?鏃舵墠榪斿洖
  if (row == 0) {
   return string;
  } else {
   return null;
  }
 }
}

SideBorder.java:
public class SideBorder extends Border {
 private char borderChar; // 瑁呴グ瀛楃

 public SideBorder(Display display, char ch) { // 浠ユ瀯閫犲瓙鎸囧畾Display鍜岃楗板瓧絎?
  super(display);
  this.borderChar = ch;
 }

 public int getColumns() { // 瀛楁暟瑕佸啀鍔犱笂鍏у涓よ竟鐨勮楗板瓧絎?br>  return 1 + display.getColumns() + 1;
 }

 public int getRows() { // 琛屾暟鍚屽収瀹圭殑琛屾暟
  return display.getRows();
 }

 public String getRowText(int row) { // 鎸囧畾璇ヨ鐨勫収瀹瑰嵆涓哄湪鍏у涔嬫寚瀹氳鐨勪袱杈?br>  // 鍔犱笂瑁呴グ瀛楃

  return borderChar + display.getRowText(row) + borderChar;
 }
}

UpDownBorder .java:
public class UpDownBorder extends Border {
 private char borderChar; // 瑁呴グ瀛楃

 public UpDownBorder(Display display, char ch) { // 浠ユ瀯閫犲瓙鎸囧畾Display鍜岃楗板瓧絎?br>  super(display);
  this.borderChar = ch;
 }

 public int getColumns() { // 瀛楁暟鍚屽収瀹圭殑瀛楁暟
  return display.getColumns();
 }

 public int getRows() { // 琛屾暟瑕佸啀鍔犱笂鍏у涓婁笅鐨勮楗板瓧絎︾殑琛屾暟
  return 1 + display.getRows() + 1;
 }

 public String getRowText(int row) { // 鎸囧畾璇ヨ鐨勫収瀹?br>  if (row == 0 || row == getRows() - 1) {
   return makeLine(borderChar, getColumns());
  } else {
   return display.getRowText(row - 1);
  }
 }

 private String makeLine(char ch, int count) { // 浠ュ瓧絎h錛屽緩绔嬮噸澶峜ount嬈$殑榪炵畫瀛椾覆
  StringBuffer buf = new StringBuffer();
  for (int i = 0; i < count; i++) {
   buf.append(ch);
  }
  return buf.toString();
 }
}


Main.java:
public class Main {
    public static void main(String[] args) {
        Display b1 = new StringDisplay("Hello, world.");
        Display b2 = new UpDownBorder(b1, '-');
        Display b3 = new SideBorder(b2, '*');
        b1.show();
        b2.show();
        b3.show();
        Display b4 =
                    new FullBorder(
                        new UpDownBorder(
                            new SideBorder(
                                new UpDownBorder(
                                    new SideBorder(
                                        new StringDisplay("鎮ㄥソ銆?),
                                        '*'
                                    ),
                                    '='
                                ),
                                '|'
                            ),
                            '/'
                        )
                    );
        b4.show();
    }
}

娉ㄦ剰錛歞isplay緇ф壙綾諱腑鐨刧etRowText鏂規硶
榪欎釜鏂規硶鎶婃墍鏈夌殑鐢ㄦ硶閮界戶闆嗘垚鍒頒竴璧?

Sun 2007-06-04 15:09 鍙戣〃璇勮
]]>
璁捐妯″紡錛氱粨鏋勬ā寮忎箣Composite(緇勫悎)http://m.tkk7.com/Swing/articles/121789.htmlSunSunMon, 04 Jun 2007 03:41:00 GMThttp://m.tkk7.com/Swing/articles/121789.htmlhttp://m.tkk7.com/Swing/comments/121789.htmlhttp://m.tkk7.com/Swing/articles/121789.html#Feedback0http://m.tkk7.com/Swing/comments/commentRss/121789.htmlhttp://m.tkk7.com/Swing/services/trackbacks/121789.htmlComposite瀹氫箟:
灝嗗璞′互鏍戝艦緇撴瀯緇勭粐璧鋒潵,浠ヨ揪鎴?#8220;閮ㄥ垎錛嶆暣浣?#8221; 鐨勫眰嬈$粨鏋勶紝浣垮緱瀹㈡埛绔鍗曚釜瀵硅薄鍜岀粍鍚堝璞$殑浣跨敤鍏鋒湁涓鑷存?

浣跨敤Composite
棣栧厛瀹氫箟涓涓帴鍙f垨鎶借薄綾伙紝榪欐槸璁捐妯″紡閫氱敤鏂瑰紡浜嗭紝鍏朵粬璁捐妯″紡瀵規帴鍙e唴閮ㄥ畾涔夐檺鍒朵笉澶氾紝Composite鍗存湁涓瀹氾紝閭e氨鏄鍦ㄦ帴鍙e唴閮ㄥ畾涔変竴涓敤浜庤闂拰綆$悊Composite緇勫悎浣撶殑瀵硅薄浠紙鎴栫О閮ㄤ歡Component錛?

涓嬮潰鐨勪唬鐮佹槸浠ユ娊璞$被瀹氫箟錛屼竴鑸敖閲忕敤鎺ュ彛interface,

public abstract class Equipment
{
銆銆private String name;
銆銆//緗戠粶浠鋒牸
銆銆public abstract double netPrice();
銆銆//鎶樻墸浠鋒牸
銆銆public abstract double discountPrice();
銆銆//澧炲姞閮ㄤ歡鏂規硶銆銆
銆銆public boolean add(Equipment equipment) { return false; }
銆銆//鍒犻櫎閮ㄤ歡鏂規硶
銆銆public boolean remove(Equipment equipment) { return false; }
銆銆//娉ㄦ剰榪欓噷錛岃繖閲屽氨鎻愪緵涓縐嶇敤浜庤闂粍鍚堜綋綾葷殑閮ㄤ歡鏂規硶銆?br>銆銆public Iterator iter() { return null; }
銆銆
銆銆public Equipment(final String name) { this.name=name; }
}

鎶借薄綾?span>Equipment灝辨槸Component瀹氫箟錛屼唬琛ㄧ潃緇勫悎浣撶被鐨勫璞′滑,Equipment涓畾涔夊嚑涓叡鍚岀殑鏂規硶銆?/span>

public class Disk extends Equipment
{
銆銆public Disk(String name) { super(name); }
銆銆//瀹氫箟Disk緗戠粶浠鋒牸涓?
銆銆public double netPrice() { return 1.; }
銆銆//瀹氫箟浜哾isk鎶樻墸浠鋒牸鏄?.5 瀵規姌銆?br>銆銆public double discountPrice() { return .5; }
}

Disk鏄粍鍚堜綋鍐呯殑涓涓璞★紝鎴栫О涓涓儴浠訛紝榪欎釜閮ㄤ歡鏄釜鍗曠嫭鍏冪礌( Primitive)銆?br>榪樻湁涓縐嶅彲鑳芥槸錛屼竴涓儴浠朵篃鏄竴涓粍鍚堜綋錛屽氨鏄榪欎釜閮ㄤ歡涓嬮潰榪樻湁'鍎垮瓙'錛岃繖鏄爲褰㈢粨鏋勪腑閫氬父鐨勬儏鍐碉紝搴旇姣旇緝瀹規槗鐞嗚В銆傜幇鍦ㄦ垜浠厛瑕佸畾涔夎繖涓粍鍚堜綋錛?/span>

abstract class CompositeEquipment extends Equipment
{
銆銆private int i=0;
銆銆//瀹氫箟涓涓猇ector 鐢ㄦ潵瀛樻斁'鍎垮瓙'
銆銆private Lsit equipment=new ArrayList();

銆銆public CompositeEquipment(String name) { super(name); }

銆銆public boolean add(Equipment equipment) {
銆銆銆銆 this.equipment.add(equipment);
銆銆銆銆 return true;
銆銆 }

銆銆public double netPrice()
銆銆{
銆銆銆銆double netPrice=0.;
銆銆銆銆Iterator iter=equipment.iterator();
銆銆銆銆for(iter.hasNext())
銆銆銆銆銆銆netPrice+=((Equipment)iter.next()).netPrice();
銆銆銆銆return netPrice;
銆銆}

銆銆public double discountPrice()
銆銆{
銆銆銆銆double discountPrice=0.;
銆銆銆銆Iterator iter=equipment.iterator();
銆銆銆銆for(iter.hasNext())
銆銆銆銆銆銆discountPrice+=((Equipment)iter.next()).discountPrice();
銆銆銆銆return discountPrice;
銆銆}
銆銆

銆銆//娉ㄦ剰榪欓噷錛岃繖閲屽氨鎻愪緵鐢ㄤ簬璁塊棶鑷繁緇勫悎浣撳唴鐨勯儴浠舵柟娉曘?br>銆銆//涓婇潰dIsk 涔嬫墍浠ユ病鏈夛紝鏄洜涓篋isk鏄釜鍗曠嫭(Primitive)鐨勫厓绱?
銆銆public Iterator iter()
銆銆{
銆銆銆銆return equipment.iterator() ;
銆銆{
銆銆//閲嶈澆Iterator鏂規硶
銆銆 public boolean hasNext() { return i<equipment.size(); }
銆銆//閲嶈澆Iterator鏂規硶
銆銆 public Object next()
銆銆 {
銆銆銆銆if(hasNext())
銆銆銆銆銆銆 return equipment.elementAt(i++);
銆銆銆銆else
銆銆 銆銆 銆 throw new NoSuchElementException();
銆銆 }
銆銆

}

涓婇潰CompositeEquipment緇ф壙浜咵quipment,鍚屾椂涓鴻嚜宸遍噷闈㈢殑瀵硅薄浠彁渚涗簡澶栭儴璁塊棶鐨勬柟娉?閲嶈澆浜咺terator,Iterator鏄疛ava鐨凜ollection鐨勪竴涓帴鍙o紝鏄疘terator妯″紡鐨勫疄鐜?

鎴戜滑鍐嶇湅鐪?span>CompositeEquipment鐨勪袱涓叿浣撶被:鐩樼洅Chassis鍜岀瀛怌abinet錛岀瀛愰噷闈㈠彲浠ユ斁寰堝涓滆タ錛屽搴曟澘錛岀數婧愮洅錛岀‖鐩樼洅絳夛紱鐩樼洅閲岄潰鍙互鏀句竴浜涘皬璁懼錛屽紜洏 杞┍絳夈傛棤鐤戣繖涓や釜閮芥槸灞炰簬緇勫悎浣撴ц川鐨勩?/span>

public class Chassis extends CompositeEquipment
{
銆銆 public Chassis(String name) { super(name); }
銆銆 public double netPrice() { return 1.+super.netPrice(); }
銆銆 public double discountPrice() { return .5+super.discountPrice(); }
}

public class Cabinet extends CompositeEquipment
{
銆銆 public Cabinet(String name) { super(name); }
銆銆 public double netPrice() { return 1.+super.netPrice(); }
銆銆 public double discountPrice() { return .5+super.discountPrice(); }
}

鑷蟲鎴戜滑瀹屾垚浜嗘暣涓?span>Composite妯″紡鐨勬灦鏋勩?/span>

鎴戜滑鍙互鐪嬬湅瀹㈡埛绔皟鐢?span>Composote浠g爜:

Cabinet cabinet=new Cabinet("Tower");

Chassis chassis=new Chassis("PC Chassis");
//灝哖C Chassis瑁呭埌Tower涓?(灝嗙洏鐩掕鍒扮瀛愰噷)
cabinet.add(chassis);
//灝嗕竴涓?0GB鐨勭‖鐩樿鍒?PC Chassis (灝嗙‖鐩樿鍒扮洏鐩掗噷)
chassis.add(new Disk("10 GB"));

//璋冪敤 netPrice()鏂規硶;
System.out.println("netPrice="+cabinet.netPrice());
System.out.println("discountPrice="+cabinet.discountPrice());

涓婇潰璋冪敤鐨勬柟娉?span>netPrice()鎴杁iscountPrice()錛屽疄闄呬笂Composite浣跨敤Iterator閬嶅巻浜嗘暣涓爲褰㈢粨鏋?瀵繪壘鍚屾牱鍖呭惈榪欎釜鏂規硶鐨勫璞″茍瀹炵幇璋冪敤鎵ц.

Composite鏄釜寰堝閥濡欎綋鐜版櫤鎱х殑妯″紡錛屽湪瀹為檯搴旂敤涓紝濡傛灉紕板埌鏍戝艦緇撴瀯錛屾垜浠氨鍙互灝濊瘯鏄惁鍙互浣跨敤榪欎釜妯″紡銆?/span>



Sun 2007-06-04 11:41 鍙戣〃璇勮
]]>
璁捐妯″紡錛氱粨鏋勬ā寮忎箣Proxy(浠g悊)http://m.tkk7.com/Swing/articles/121775.htmlSunSunMon, 04 Jun 2007 02:57:00 GMThttp://m.tkk7.com/Swing/articles/121775.htmlhttp://m.tkk7.com/Swing/comments/121775.htmlhttp://m.tkk7.com/Swing/articles/121775.html#Feedback0http://m.tkk7.com/Swing/comments/commentRss/121775.htmlhttp://m.tkk7.com/Swing/services/trackbacks/121775.htmlProxy鏄瘮杈冩湁鐢ㄩ旂殑涓縐嶆ā寮?鑰屼笖鍙樼杈冨,搴旂敤鍦哄悎瑕嗙洊浠庡皬緇撴瀯鍒版暣涓郴緇熺殑澶х粨鏋?Proxy鏄唬鐞嗙殑鎰忔?鎴戜滑涔熻鏈変唬鐞嗘湇鍔″櫒絳夋蹇?浠g悊姒傚康鍙互瑙i噴涓?鍦ㄥ嚭鍙戠偣鍒扮洰鐨勫湴涔嬮棿鏈変竴閬撲腑闂村眰,鎰忎負浠g悊.

璁捐妯″紡涓畾涔?/strong>: 涓哄叾浠栧璞℃彁渚涗竴縐嶄唬鐞嗕互鎺у埗瀵硅繖涓璞$殑璁塊棶.瑕佺敤鍐嶅緩绔?br>紼嬪簭涓句緥1錛氭潈闄愯闂?br>

public class ForumProxy implements Forum {

private ForumPermissions permissions;
private Forum forum;
this.authorization = authorization;

public ForumProxy(Forum forum, Authorization authorization,
ForumPermissions permissions)
{
this.forum = forum;
this.authorization = authorization;
this.permissions = permissions;
}

.....

public void setName(String name) throws UnauthorizedException,
ForumAlreadyExistsException
{
銆銆//鍙湁鏄郴緇熸垨璁哄潧綆$悊鑰呮墠鍙互淇敼鍚嶇О
銆銆if (permissions.isSystemOrForumAdmin()) {
銆銆銆銆forum.setName(name);
銆銆}
銆銆else {
銆銆銆銆throw new UnauthorizedException();
銆銆}
}

...

}

鑰?span lang=EN-US>DbForum鎵嶆槸鎺ュ彛Forum鐨勭湡姝e疄鐜?浠ヤ慨鏀硅鍧涘悕縐頒負渚?

public class DbForum implements Forum, Cacheable {
...

public void setName(String name) throws ForumAlreadyExistsException {

銆銆....

銆銆this.name = name;
銆銆//榪欓噷鐪熸灝嗘柊鍚嶇О淇濆瓨鍒版暟鎹簱涓?
銆銆saveToDb();

銆銆....
}


...

}


鍑℃槸娑夊強鍒板璁哄潧鍚嶇О淇敼榪欎竴浜嬩歡,鍏朵粬紼嬪簭閮介鍏堝緱鍜孎orumProxy鎵撲氦閬?鐢盕orumProxy鍐沖畾鏄惁鏈夋潈闄愬仛鏌愪竴鏍蜂簨鎯?ForumProxy鏄釜鍚嶅壇鍏跺疄鐨?緗戝叧","瀹夊叏浠g悊緋葷粺".
紼嬪簭涓句緥2錛氱敤鍒版墠鍒涘緩
瀹為檯鎵ц鎵撳嵃 涓轟簡妯′豢闀挎椂闂存搷浣?鍦ㄦ瀯寤虹殑鏃跺欏歡榪?S
public class Printer implements Printable {
 private String name;

 public Printer() {
  heavyJob("姝e湪浜х敓Printer鐨勫璞″疄渚?);
 }

 public Printer(String name) { // 鏋勯犲瓙
  this.name = name;
  heavyJob("姝e湪浜х敓Printer鐨勫璞″疄渚?" + name + ")");
 }

 public void setPrinterName(String name) { // 鍛藉悕
  this.name = name;
 }

 public String getPrinterName() { // 鍙栧緱鍚嶇О
  return name;
 }

 public void print(String string) { // 杈撳嚭鍚嶇О
  System.out.println("=== " + name + " ===");
  System.out.println(string);
 }

 private void heavyJob(String msg) { // 杈冮噸鐨勫伐浣滐紙鍋囪錛?br>  System.out.print(msg);
  for (int i = 0; i < 5; i++) {
   try {
    Thread.sleep(1000);
   } catch (InterruptedException e) {
   }
   System.out.print(".");
  }
  System.out.println("瀹屾垚銆?);
 }
}
浠g悊綾伙細鐪熸瑕佹墦鍗頒簡鎵嶅幓璋冪敤鐢熸垚printer騫朵笖鍙傛暟璧嬪艱繘琛屾墦鍗版搷浣?br>public class PrinterProxy implements Printable {
 private String name; // 鍚嶇О

 private Printable real; // 銆屾湰浜恒?/span>

 private String className; // 銆屾湰浜恒嶇殑綾誨悕縐?/span>

 public PrinterProxy(String name, String className) { // 鏋勯犲瓙
  this.name = name;
  this.className = className;
 }

 public synchronized void setPrinterName(String name) { // 鍛藉悕
  if (real != null) {
   real.setPrinterName(name); //銆屾湰浜恒嶄篃瑕佸懡鍚?br>  }
  this.name = name;
 }

 public String getPrinterName() { // 鍙栧緱鍚嶇О
  return name;
 }

 public void print(String string) { // 杈撳嚭鍒扮敾闈笂
  realize();
  real.print(string);
 }

 private synchronized void realize() { // 浜х敓銆屾湰浜恒?br>  if (real == null) {
   try {
    real = (Printable) Class.forName("Proxy." + className)
      .newInstance();
    real.setPrinterName(name);
   } catch (ClassNotFoundException e) {
    System.err.println("鎵句笉鍒扮被 " + className + "銆?);
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
 }
}
鏃犺鎬庝箞璋冪敤setPrinterName鏂規硶閮戒笉浼氫駭鐢焤eal瀹炰緥 鍙湁鐪熸闇瑕佺敓鎴愭湰浜虹殑鏃跺欐墠浼氱敓鎴?br>嫻嬭瘯鏂規硶錛?br>public class Main {
 public static void main(String[] args) {
  Printable p = new PrinterProxy("Alice", "Printer");
  System.out.println("鐜板湪鐨勫悕縐版槸" + p.getPrinterName() + "銆?);
  p.setPrinterName("Bob");
//涓嶄細鐢熸垚Printer
  System.out.println("鐜板湪鐨勫悕縐版槸" + p.getPrinterName() + "銆?);
//涓嶄細鐢熸垚Printer
  p.print("Hello, world.");
//鐢熸垚Printer
 }
}



Sun 2007-06-04 10:57 鍙戣〃璇勮
]]>
璁捐妯″紡錛氬垱寤烘ā寮忎箣Singleton(鍗曟?http://m.tkk7.com/Swing/articles/120814.htmlSunSunWed, 30 May 2007 02:11:00 GMThttp://m.tkk7.com/Swing/articles/120814.htmlhttp://m.tkk7.com/Swing/comments/120814.htmlhttp://m.tkk7.com/Swing/articles/120814.html#Feedback0http://m.tkk7.com/Swing/comments/commentRss/120814.htmlhttp://m.tkk7.com/Swing/services/trackbacks/120814.htmlSingleton妯″紡涓昏浣滅敤鏄繚璇佸湪Java搴旂敤紼嬪簭涓紝涓涓被Class鍙湁涓涓疄渚嬪瓨鍦ㄣ?br>涓鑸琒ingleton妯″紡閫氬父鏈夊嚑縐嶅艦寮?

public class Singleton {

銆銆private Singleton(){}

銆銆//鍦ㄨ嚜宸卞唴閮ㄥ畾涔夎嚜宸變竴涓疄渚嬶紝鏄笉鏄緢濂囨紵
銆銆//娉ㄦ剰榪欐槸private 鍙緵鍐呴儴璋冪敤

銆銆private static Singleton instance = new Singleton();

銆銆//榪欓噷鎻愪緵浜嗕竴涓緵澶栭儴璁塊棶鏈琧lass鐨勯潤鎬佹柟娉曪紝鍙互鐩存帴璁塊棶銆銆
銆銆public static Singleton getInstance() {
銆銆銆銆return instance; 銆銆
銆銆 }
//褰撶▼搴忕涓嬈¤皟鐢╣etInstance鐨勬椂鍊欏垵濮嬪寲Singleton 綾?鍚屾椂鍒濆鍖杝tatic瀛楁 浜х敓鍞竴鐨勫璞″疄渚?br>}

 

絎簩縐嶅艦寮?span>:

public class Singleton {

銆銆private static Singleton instance = null;

銆銆public static synchronized Singleton getInstance() {

銆銆//榪欎釜鏂規硶姣斾笂闈㈡湁鎵鏀硅繘錛屼笉鐢ㄦ瘡嬈¢兘榪涜鐢熸垚瀵硅薄錛屽彧鏄涓嬈°銆銆 銆
銆銆//浣跨敤鏃剁敓鎴愬疄渚嬶紝鎻愰珮浜嗘晥鐜囷紒
銆銆if (instance==null)
銆銆銆銆instance錛漬ew Singleton();
銆銆return instance; 銆銆}

}

 

浣跨敤Singleton.getInstance()鍙互璁塊棶鍗曟佺被銆?/span>

涓婇潰絎簩涓艦寮忔槸lazy initialization錛屼篃灝辨槸璇寸涓嬈¤皟鐢ㄦ椂鍒濆Singleton錛屼互鍚庡氨涓嶇敤鍐嶇敓鎴愪簡銆?/span>

娉ㄦ剰鍒?span>lazy initialization褰㈠紡涓殑synchronized錛岃繖涓猻ynchronized寰堥噸瑕侊紝濡傛灉娌℃湁synchronized錛岄偅涔堜嬌鐢╣etInstance()鏄湁鍙兘寰楀埌澶氫釜Singleton瀹炰緥銆?/span>

涓鑸涓虹涓縐嶅艦寮忚鏇村姞瀹夊叏浜涖?/p>

Sun 2007-05-30 10:11 鍙戣〃璇勮
]]>
璁捐妯″紡錛氬垱寤烘ā寮忎箣Builderhttp://m.tkk7.com/Swing/articles/120804.htmlSunSunWed, 30 May 2007 01:54:00 GMThttp://m.tkk7.com/Swing/articles/120804.htmlhttp://m.tkk7.com/Swing/comments/120804.htmlhttp://m.tkk7.com/Swing/articles/120804.html#Feedback1http://m.tkk7.com/Swing/comments/commentRss/120804.htmlhttp://m.tkk7.com/Swing/services/trackbacks/120804.htmlBuilder妯″紡瀹氫箟:
灝嗕竴涓鏉傚璞$殑鏋勫緩涓庡畠鐨勮〃紺哄垎紱?浣垮緱鍚屾牱鐨勬瀯寤鴻繃紼嬪彲浠ュ垱寤轟笉鍚岀殑琛ㄧず.

Builder妯″紡鏄竴姝ヤ竴姝ュ垱寤轟竴涓鏉傜殑瀵硅薄,瀹冨厑璁哥敤鎴峰彲浠ュ彧閫氳繃鎸囧畾澶嶆潅瀵硅薄鐨勭被鍨嬪拰鍐呭灝卞彲浠ユ瀯寤哄畠浠?鐢ㄦ埛涓嶇煡閬撳唴閮ㄧ殑鍏蜂綋鏋勫緩緇嗚妭.Builder妯″紡鏄潪甯哥被浼兼娊璞″伐鍘傛ā寮?緇嗗井鐨勫尯鍒ぇ姒傚彧鏈夊湪鍙嶅浣跨敤涓墠鑳戒綋浼氬埌.


涓轟簡灝嗘瀯寤哄鏉傚璞$殑榪囩▼鍜屽畠鐨?strong>閮ㄤ歡
瑙h?娉ㄦ剰: 鏄В鑰?strong>榪囩▼鍜?strong>閮ㄤ歡.

鍥犱負涓涓鏉傜殑瀵硅薄,涓嶄絾鏈夊緢澶氬ぇ閲忕粍鎴愰儴鍒?濡傛苯杞?鏈夊緢澶氶儴浠?杞﹁疆 鏂瑰悜鐩?鍙戝姩鏈鴻繕鏈夊悇縐嶅皬闆朵歡絳夌瓑,閮ㄤ歡寰堝,浣嗚繙涓嶆榪欎簺,濡備綍灝嗚繖浜涢儴浠惰閰嶆垚涓杈嗘苯杞?榪欎釜瑁呴厤榪囩▼涔熷緢澶嶆潅(闇瑕佸緢濂界殑緇勮鎶鏈?,Builder妯″紡灝辨槸涓轟簡灝嗛儴浠跺拰緇勮榪囩▼鍒嗗紑.

棣栧厛,闇瑕佷竴涓帴鍙?瀹冨畾涔夊浣曞垱寤哄鏉傚璞$殑鍚勪釜閮ㄤ歡:

public interface Builder {

銆銆//鍒涘緩閮ㄤ歡A銆銆姣斿鍒涘緩姹借濺杞﹁疆
銆銆void buildPartA();
銆銆//鍒涘緩閮ㄤ歡B 姣斿鍒涘緩姹借濺鏂瑰悜鐩?br>銆銆void buildPartB();
銆銆//鍒涘緩閮ㄤ歡C 姣斿鍒涘緩姹借濺鍙戝姩鏈?br>銆銆void buildPartC();

銆銆//榪斿洖鏈鍚庣粍瑁呮垚鍝佺粨鏋?(榪斿洖鏈鍚庤閰嶅ソ鐨勬苯杞?
銆銆//鎴愬搧鐨勭粍瑁呰繃紼嬩笉鍦ㄨ繖閲岃繘琛?鑰屾槸杞Щ鍒頒笅闈㈢殑Director綾諱腑榪涜.
銆銆//浠庤屽疄鐜頒簡瑙h?strong>榪囩▼鍜?strong>閮ㄤ歡
銆銆Product getResult();

}

鐢?span lang=EN-US>Director鏋勫緩鏈鍚庣殑澶嶆潅瀵硅薄,鑰屽湪涓婇潰Builder鎺ュ彛涓皝瑁呯殑鏄浣曞垱寤轟竴涓釜閮ㄤ歡(澶嶆潅瀵硅薄鏄敱榪欎簺閮ㄤ歡緇勬垚鐨?,涔熷氨鏄Director鐨勫唴瀹規槸濡備綍灝嗛儴浠舵渶鍚庣粍瑁呮垚鎴愬搧:

public class Director {

銆銆private Builder builder;

銆銆public Director( Builder builder ) {
銆銆銆銆this.builder = builder;
銆銆}
銆銆// 灝嗛儴浠秔artA partB partC鏈鍚庣粍鎴愬鏉傚璞?br>銆銆//榪欓噷鏄皢杞﹁疆 鏂瑰悜鐩樺拰鍙戝姩鏈虹粍瑁呮垚姹借濺鐨勮繃紼?br>銆銆public void construct() {
銆銆銆銆builder.buildPartA();
銆銆銆銆builder.buildPartB();
銆銆銆銆builder.buildPartC();

銆銆}

}

Builder鐨勫叿浣撳疄鐜癈oncreteBuilder:
閫氳繃鍏蜂綋瀹屾垚鎺ュ彛Builder鏉ユ瀯寤烘垨瑁呴厤浜у搧鐨勯儴浠?
瀹氫箟騫舵槑紜畠鎵瑕佸垱寤虹殑鏄粈涔堝叿浣撲笢瑗?
鎻愪緵涓涓彲浠ラ噸鏂拌幏鍙栦駭鍝佺殑鎺ュ彛:

public class ConcreteBuilder implements Builder {

銆銆Part partA, partB, partC;
銆銆public void buildPartA() {
銆銆銆銆//榪欓噷鏄叿浣撳浣曟瀯寤簆artA鐨勪唬鐮?br>
銆銆};
銆銆public void buildPartB() {
銆銆銆銆//榪欓噷鏄叿浣撳浣曟瀯寤簆artB鐨勪唬鐮?br>銆銆};
銆銆 public void buildPartC() {
銆銆銆銆//榪欓噷鏄叿浣撳浣曟瀯寤簆artB鐨勪唬鐮?br>銆銆};
銆銆 public Product getResult() {
銆銆銆銆//榪斿洖鏈鍚庣粍瑁呮垚鍝佺粨鏋?br>銆銆};

}


ConcreteBuilder builder = new ConcreteBuilder();
Director director = new Director( builder );

director.construct();
Product product = builder.getResult();

builder綾誨浘錛?br>


Sun 2007-05-30 09:54 鍙戣〃璇勮
]]>璁捐妯″紡錛氬垱寤烘ā寮忎箣Prototype(鍘熷瀷)http://m.tkk7.com/Swing/articles/120699.htmlSunSunTue, 29 May 2007 07:43:00 GMThttp://m.tkk7.com/Swing/articles/120699.htmlhttp://m.tkk7.com/Swing/comments/120699.htmlhttp://m.tkk7.com/Swing/articles/120699.html#Feedback0http://m.tkk7.com/Swing/comments/commentRss/120699.htmlhttp://m.tkk7.com/Swing/services/trackbacks/120699.html澶嶅埗浜х敓瀵硅薄瀹炰緥錛?br>浣跨敤Prototype妯″紡鍙互鐞嗚В涓?nbsp; 鍒涢犲嚭涓涓拰宸叉湁瀵硅薄涓鏍風殑瀵硅薄
ex)鎸囩潃闈㈠寘搴楁┍紿楅噷鐨勯潰鍖呭憡璇夎佹澘 鎴戝氨瑕佽繖涓?铏界劧涓嶇煡閬撳悕瀛?涔熶笉鐭ラ亾鍋氭硶 浣嗘槸鑳戒拱鍒板拰鎵鎸囩殑鐩稿悓鐨勪笢瑗褲?br>瀹炰緥錛?br>1銆佸畾涔変竴涓帴鍙?瀹炵幇Cloneable
public interface Product extends Cloneable {
    public abstract void use(String s);
    public abstract Product createClone();
}
2銆佸0鏄庝竴涓猰anage綾繪潵鏍規嵁Product鐨刢reateClone鏉ヨ繘琛屽鍒?br>public class Manager {
       private Hashtable showcase = new Hashtable();
    public void register(String name, Product proto) {
        showcase.put(name, proto);
    }
    public Product create(String protoname) {
        Product p = (Product)showcase.get(protoname);
        return p.createClone();
    }
}
3銆丳roduct綾葷殑涓涓叿浣撳疄鐜?br>public class UnderlinePen implements Product {
    private char ulchar;
    public UnderlinePen(char ulchar) {
        this.ulchar = ulchar;
    }
    public void use(String s) {
        int length = s.getBytes().length;
        System.out.println("\""  + s + "\"");
        System.out.print(" ");
        for (int i = 0; i < length; i++) {
            System.out.print(ulchar);
        }
        System.out.println("");
    }
    public Product createClone() {
        Product p = null;
        try {
            p = (Product)clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return p;
    }
}
4銆佸叿浣撲嬌鐢?br>     // 棰勫闃舵
        Manager manager = new Manager();
        UnderlinePen upen = new UnderlinePen('~');
        MessageBox mbox = new MessageBox('*');
        MessageBox sbox = new MessageBox('/');
        manager.register("strong message", upen);
        manager.register("warning box", mbox);
        manager.register("slash box", sbox);

        // 瀹炵幇浜х敓
        Product p1 = manager.create("strong message");
        p1.use("Hello, world.");
        Product p2 = manager.create("warning box");
        p2.use("Hello, world.");
        Product p3 = manager.create("slash box");
        p3.use("Hello, world.");
    }

涔熷彲浠ュ皢product澹版槑鎴愭娊璞$被瀹炵幇Cloneable鎺ュ彛
騫朵笖瀹炵幇createClone鏂規硶
榪欐牱瀛愮被涓氨涓嶇敤鍐嶅0鏄巆reatClone鏂規硶浜?綆鍖栦簡浠g爜

clone鏂規硶鍦∣bject涓畾涔?鍥犳鎵鏈夌被閮戒細緇ф壙clone()鏂規硶
Cloneable榪欎釜鎺ュ彛琛ㄧず 鍙敤clone()鏂規硶榪涜澶嶅埗
clone()鏂規硶鍋氱殑鏄祬鎷瘋礉 鎵鍋氱殑鎿嶄綔鏄洿鎺ュ鍒跺瓧孌靛唴瀹?騫朵笉綆¤瀛楁瀵瑰簲鐨勫璞″疄渚嬪唴瀹?鍋囧畾鏈変竴涓暟緇?褰撲嬌鐢╟lone鏂規硶榪涜鎷瘋礉浠ュ悗 澶嶅埗鐨勭粨鏋滐紝鍙槸瀵瑰簲鍒拌鏁扮粍鐨勫弬鐓?鍗蟲寚鍚戣鏁扮粍鐨勫唴瀛樺湴鍧 濡傛灉鎯沖仛娣辨嫹璐?蹇呴』閲嶅啓clone鏂規硶 璁板緱瑕佸姞涓妔uper.clone()



Sun 2007-05-29 15:43 鍙戣〃璇勮
]]>
璁捐妯″紡錛氬垱寤哄璞′箣Factoryhttp://m.tkk7.com/Swing/articles/120690.htmlSunSunTue, 29 May 2007 07:12:00 GMThttp://m.tkk7.com/Swing/articles/120690.htmlhttp://m.tkk7.com/Swing/comments/120690.htmlhttp://m.tkk7.com/Swing/articles/120690.html#Feedback0http://m.tkk7.com/Swing/comments/commentRss/120690.htmlhttp://m.tkk7.com/Swing/services/trackbacks/120690.html1銆佸紩鍏actory  Pattern鐨勭洰鐨勬槸涓轟簡灝佽綾葷殑瀹炰緥鍖栨搷浣?br>

public class Factory{

銆銆public static Sample creator(int which){
         
//getClass 浜х敓Sample 涓鑸彲浣跨敤鍔ㄦ佺被瑁呰澆瑁呭叆綾匯?br>銆銆if (which==1)
銆銆銆銆return new SampleA();
銆銆else if (which==2)
銆銆銆銆return new SampleB();

銆銆}

}

閭d箞鍦ㄤ綘鐨勭▼搴忎腑,濡傛灉瑕佸疄渚嬪寲Sample鏃?灝變嬌鐢?o:p>

Sample sampleA=Factory.creator(1);

榪欐牱,鍦ㄦ暣涓氨涓嶆秹鍙婂埌Sample鐨勫叿浣撳瓙綾?杈懼埌灝佽鏁堟灉,涔熷氨鍑忓皯閿欒淇敼鐨勬満浼?榪欎釜鍘熺悊鍙互鐢ㄥ緢閫氫織鐨勮瘽鏉ユ瘮鍠?灝辨槸鍏蜂綋浜嬫儏鍋氬緱瓚婂,瓚婂鏄撹寖閿欒

2銆丗actory Pattern鍦ㄧ埗綾昏瀹氬璞$殑鍒涘緩鏂規硶錛屼絾涓嶆繁鍏ュ埌鍏蜂綋鐨勭被鍚嶏紝鎵鏈夊叿浣撶殑瀹炵幇閮芥斁鍦ㄤ簡瀛愮被錛屽ぇ鑷村彲浠ュ垎涓轟駭鐢熷璞″疄渚嬬殑澶х翰(妗嗘灦)鍜屽疄闄呬駭鐢熷璞″疄渚嬬殑綾諱袱鏂歸潰

瀹炰緥錛?br>
framework涓殑Factory鏄疄鐜癱reat鐨勬娊璞$被
 public final Product creat(String owner) {
  Product p = creadProduct(owner);
  registerProduct(p);
  return p;
 }

 public abstract Product creadProduct(String owner);
famework涓殑Product鏄粎瀹炵幇use鏂規硶鐨勬娊璞$被

鍏蜂綋鐨勭敓鎴愬拰浣跨敤鏂規硶閮界敤idcard涓殑綾誨叿浣撳疄鐜?br> IDcardFactory錛?br> IDcardFactory extends Factory 
 public synchronized Product creadProduct(String owner) {
  IDcard ic = new IDcard(owner);
  return ic;
 }

IDcarrd錛?br>class IDcard extends Product
IDcard(String owner) {
  System.out.println("寤虹珛" + owner +"鐨勫崱");
  this.owner = owner;
 }
姝ゅ鏋勯犲嚱鏁頒笉鏄痯ublic 鍙湁閫氳繃鍚屼竴涓寘涓殑factory鎵嶅彲浠ヤ駭鐢熻繖涓璞″疄渚?/p>

 public void use() {
  System.out.println("浣跨敤"  + owner + "鐨勫崱");
 }

鍏蜂綋浣跨敤錛?br> public static void main(String[] args) {
  Factory fc = new IDcardFactory();
  Product p1 = fc.creat("card1");
  Product p2 = fc.creat("card2");
  Product p3 = fc.creat("card3");
  p1.use();
  p2.use();
  p3.use();
 }
榪欐牱涓嶅繀淇敼framework鍖呬腑鐨勫唴瀹瑰氨鑳藉鍒涘緩鍑轟笉鍚岀殑浜у搧鍜屽伐鍘?/p>

Sun 2007-05-29 15:12 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 日本一道本不卡免费 | 国产三级电影免费观看| 亚洲人成伊人成综合网久久| 久久久精品免费视频| 亚洲深深色噜噜狠狠爱网站| 青青久久精品国产免费看| 亚洲国产精品第一区二区三区| 水蜜桃视频在线观看免费| 亚洲人妻av伦理| 中文字幕视频免费在线观看 | 免费a级毛片高清视频不卡| 亚洲成a人片在线观看中文app | 一级特黄特色的免费大片视频| 日本中文一区二区三区亚洲| 一区二区在线视频免费观看| 免费人成在线观看69式小视频| 成年女人毛片免费播放视频m| 精品国产成人亚洲午夜福利| 女人被男人躁的女爽免费视频| 亚洲色精品三区二区一区| 日韩高清免费观看| 青青青视频免费观看| 午夜影视日本亚洲欧洲精品一区| 免费无码又爽又刺激高潮视频| 亚洲午夜电影在线观看高清| 日本大片在线看黄a∨免费 | 国产亚洲精品国看不卡| 日本免费一区二区三区| 亚洲无人区码一二三码区别图片| 成人黄动漫画免费网站视频| 日韩在线视频播放免费视频完整版| 曰韩亚洲av人人夜夜澡人人爽| 69精品免费视频| 老司机午夜在线视频免费观| 亚洲一区二区在线视频| 成人性生交大片免费看无遮挡| 免费无码一区二区三区蜜桃| 久久亚洲伊人中字综合精品| 最新猫咪www免费人成| 中文字字幕在线高清免费电影| jlzzjlzz亚洲jzjzjz|