freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[計算機(jī)軟件及應(yīng)用]設(shè)計模式的例子-資料下載頁

2025-01-18 14:37本頁面
  

【正文】 ))。 }//end sampleOperation() }//END CLASS Knob package Decorator。 /* *用來裝飾門的門鎖 */public class Lock extends Decorator{ public Lock(Component ponent) { super(ponent)。 }//end ConcreteDecorator1(...) public void sampleOperation() { ()。 (Add a lock(鎖))。 }//end sampleOperation() }//end class Lock package Decorator。 public class DecoratorPattern{ private Component door = new Door()。//創(chuàng)建一個扇門(向下轉(zhuǎn)型) private Component lock = new Lock(door)。//添加一把鎖(向下轉(zhuǎn)型) private Component knob = new Knob(lock)。//再添加一個把手(向下轉(zhuǎn)型) public void showDecorator() {// ()。// ()。 ()。 }//end showDecorator() public static void main(String[] args) { (Decorator Pattern!/n)。 DecoratorPattern dp = new DecoratorPattern()。 ()。 }//end main(...) }Facade為子系統(tǒng)中的一組接口提供一個一致的界面,F(xiàn) a c a d e 模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。   適用性 當(dāng)你要為一個復(fù)雜子系統(tǒng)提供一個簡單接口時。子系統(tǒng)往往因為不斷演化而變得越來越復(fù)雜。大多數(shù)模式使用時都會產(chǎn)生更多更小的類。這使得子系統(tǒng)更具可重用 性,也更容易對子系統(tǒng)進(jìn)行定制,但這也給那些不需要定制子系統(tǒng)的用戶帶來一些使用上的困難。F a c a d e 可以提供一個簡單的缺省視圖,這一視圖對大多數(shù)用戶來說已經(jīng)足夠,而那些需要更多的可定制性的用戶可以越過f a c a d e 層。   客戶程序與抽象類的實現(xiàn)部分之間存在著很大的依賴性。引入f a c a d e 將這個子系統(tǒng)與客戶以及其他的子系統(tǒng)分離,可以提高子系統(tǒng)的獨立性和可移植性。   當(dāng)你需要構(gòu)建一個層次結(jié)構(gòu)的子系統(tǒng)時,使用f a c a d e 模式定義子系統(tǒng)中每層的入口點。如果子系統(tǒng)之間是相互依賴的,你可以讓它們僅通過f a c a d e 進(jìn)行通訊,從而簡化了它們之間的依賴關(guān)系。一個典型的應(yīng)用就是數(shù)據(jù)庫的連接: 在我封裝了一個數(shù)據(jù)庫連接類后,我還沒有意識到我使用了Fa231。ade模式,直到對Fa231。ade模式有了了解后我才知道,現(xiàn)在貼出部分代碼(完整的程序見我的Blog:): import 。 import 。 import 。 import 。 public class DbConnect { /////////////////////////////////////////數(shù)據(jù)成員 and構(gòu)造函數(shù) private Connection dbConnection = null。 private Statement selectPro = null。 //用于 select操作 private Statement insertPro = null。 //用于 insert操作 private Statement updatePro = null。 //用于 update操作 private Statement deletePro = null。 //用于 delete操作 private ResultSet dbResultSet = null。 //操作 select結(jié)果集 /** *連接MySql數(shù)據(jù)庫 * @param host MySql數(shù)據(jù)庫主機(jī) * @param port MySql數(shù)據(jù)庫端口 * @param dbaName MySql數(shù)據(jù)庫名稱 * @param usName MySql數(shù)據(jù)庫用戶名 * @param psw MySql數(shù)據(jù)庫密碼 * @return bool值,連接成功返回真,失敗返回假 */ public boolean dbConnection(String host, String port, String dbaName, String usName, String psw) { String driverName = 。// String dbHost = host。 String dbPort = port。 String dbName = dbaName。 String enCoding = ?useUnicode=trueamp。characterEncoding=gb2312amp。autoReconnect=true。 //處理MySql中文問題amp。解決數(shù)據(jù)庫長連問題 String userName = usName。 String Psw = psw。 String url = jdbc:mysql:// + dbHost + : + dbPort + / + dbName + enCoding。 try { (driverName).newInstance()。 dbConnection = (url, userName, Psw)。 return true。 }catch(Exception e){ print(url = + url)。 //發(fā)生錯誤時,將連接數(shù)據(jù)庫信息打印出來 print(userName = + userName)。 print(Psw = + Psw)。 ()。 //得到詳細(xì)的出錯消息 return false。 } }// end boolean dbConnection(...) }//end class 上面是殘缺的代碼,但是已經(jīng)能說明問題了。Flyweight運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對象。   適用性 一個應(yīng)用程序使用了大量的對象。完全由于使用大量的對象,造成很大的存儲開銷。對象的大多數(shù)狀態(tài)都可變?yōu)橥獠繝顟B(tài)。如果刪除對象的外部狀態(tài),那么可以用相對較少的共享對象取代很多組對象。   應(yīng)用程序不依賴于對象標(biāo)識。由于F l y w e i g h t 對象可以被共享,對于概念上明顯有別的對象,標(biāo)識測試將返回真值。比如說(這里引用GOF書中的例子)一個文本系統(tǒng),每個字母定一個對象,那么大小寫字母一共就是52個,那么就要定義52個對象。如果有一個1M的文本, 那么字母是何其的多,如果每個字母都定義一個對象那么內(nèi)存早就爆了。那么如果要是每個字母都共享一個對象,那么就大大節(jié)約了資源?! ≡?Flyweight模式中,由于要產(chǎn)生各種各樣的對象,所以在Flyweight(享元)模式中常出現(xiàn)Factory模式。Flyweight的內(nèi)部狀態(tài) 是用來共享的,Flyweight factory負(fù)責(zé)維護(hù)一個對象存儲池(Flyweight Pool)來存放內(nèi)部狀態(tài)的對象。Flyweight模式是一個提高程序效率和性能的模式,,下面舉個例子:  先定義一個抽象的Flyweight類:package Flyweight。public abstract class Flyweight...{ public abstract void operation()。}//end abstract class Flyweight  在實現(xiàn)一個具體類:package Flyweight。public class ConcreteFlyweight extends Flyweight...{ private String string?!ublic ConcreteFlyweight(String str) ... {  string = str?!//end ConcreteFlyweight(...) public void operation() ... {  (ConcreteFlyweight : + string)。 }//end operation()}//end class ConcreteFlyweight  實現(xiàn)一個工廠方法類:package Flyweight。import 。public class FlyweightFactory...{ private Hashtable flyweights = new Hashtable()。//1 public FlyweightFactory() ...{} public Flyweight getFlyWeight(Object obj) ... {  Flyweight flyweight = (Flyweight) (obj)。//2  if(flyweight == null) ...{//3   //產(chǎn)生新的ConcreteFlyweight   flyweight = new ConcreteFlyweight((String)obj)。   (obj, flyweight)。//5  }  return flyweight。//6 }//end GetFlyWeight(...) public int getFlyweightSize() ... {  return ()?!}//end class FlyweightFactory  這個工廠方法類非常關(guān)鍵,這里詳細(xì)解釋一下:   在1處定義了一個Hashtable用來存儲各個對象;在2處選出要實例化的對象,在6處將該對象返回,如果在Hashtable中沒有要選擇的對象, 此時變量flyweight為null,產(chǎn)生一個新的flyweight存儲在Hashtable中,并將該對象返回?! ∽詈罂纯碏lyweight的調(diào)用:package Flyweight。import 。public class FlyweightPattern ...{ FlyweightFactory factory = new FlyweightFactory()。 Flyweight fly1。 Flyweight fly2?!lyweight fly3?!lyweight fly4。 Flyweight fly5。 Flyweight fly6。 /** *//** Creates a new instance of FlyweightPattern */ public FlyweightPattern() ...{  fly1 = (Google)。  fly2 = (Qutr)?! ly3 = (Google)?! ly4 = (Google)?! ly5 = (Google)?! ly6 = (Google)?!//end FlyweightPattern() public void showFlyweight() ... {  ()?! ?)?! ?)。  ()。
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1