国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

《java與模式》讀書筆記 ----模式設計的原則

2019-11-18 15:05:46
字體:
來源:轉載
供稿:網友

里氏代換原則----LSP











概念:一個軟件實體假如使用一個父類的話,那么一定適用于其之類,而且不能覺察出父類和子類的區別。











里氏代換原則是繼續復用的基石。只有當衍生類可以替換掉基類,軟件單位不會受到影響時,基礎類才真正被復用,而衍生類才能在基礎類上增加新的行為。











java中的上塑造型既是里氏代換原則的體現。











依靠倒轉原則-----Dip











 











狹義依靠關系。











依靠關系(Dependency)類與類之間的一種連接,依靠總是單向的。一各類依靠于另一各類的定義。一個人(Person)可以買車(Car)和房子(House),Person類依靠于Car類和House類。











一般而言依靠關系在Java中體現為局部變量、方法參數以及對靜態方法的調用。換言之,一個類A的某一個局部變量的類型是另一個類B,那么A類就依靠于B類;假如一個方法的參數是另一個類B的實例,那么這個類A就依靠于B類;假如A類調用B類的靜態方法,那么A類依靠于B類。











廣義的三種依靠關系。這里依靠又稱耦合











l          零耦合關系(Nil Coupling)。兩個類沒有耦合關系。











l          具體耦合關系(Concrete Coupling)。具體性的耦合關系發生在兩個具體類(可實例化的)之間,經由一各類對另一個類直接應用造成。











l         抽象耦合關系(Abstract Coupling)。抽象耦合關系發生在一個具體類和一個抽象類(或接口)之間,使兩個必須發生關系的的類之間存在最大的靈活性。

 











依靠倒轉原則含義:抽象不應當依靠于細節,細節應當依靠與抽象。











依靠倒轉原則要求:要針對接口編程,不要針對實現編程。











針對接口編程的意思是說:應當使用java接口和抽象類進行變量類型的聲明、參數類型的聲明、返回類型的聲明、數據類型的轉換等。











要保證這一點:一個具體類應當只實現接口和抽象類中聲明的方法,而不應當給出多余的方法。











List  employees = new  Vector();

其中: List  稱變量employees的靜態類型。











               Vector稱變量employees的實際類型。











在很多情況下,一個java程序需要引用一個對象。這個時候,假如這個對象又一個抽象類型的話,應當使用這個對象的抽象類型作為變量的靜態類型。------這就是針對接口編程的具體含義。











 











接口隔離原則----------ISP











含義:使用多個專門的接口要比使用單一的總接口要好!











從客戶類角度上看:一個類對另外一個類的依靠性應當是建立在最小的接口之上。











接口的劃分直接帶來類型的劃分。











目標就是不向客戶類提供不必要的行為。











合成聚合復用原則--------CARP











關聯,聚合、合成。











合成和聚合都是關聯的非凡種類。聚合表示“擁有”關系或整體與部分的關系;而合成則是用來表示一種強的多的 “擁有”。在一個合成的關系里,部分和整體的生命周期是一樣的。一個合成的新的對象完全用又對其他組成部分的支配權。包括他們的創建和湮滅。組合而成的對象對組成部分的內存分配、內存釋放有絕對的責任。











進一步講。一個合成的多重性不能超過1,換言之,一個合成的關系中,部分對象不能于另一個合成關系對象共享。











合成通常理解為:值的聚合。而聚合則是:引用的聚合。











合成和聚合是將已有的對象納入到新的對象中,使之成為新對象的一部分,因此新的對象可以調用已由對象的功能。達到復用的目的。

優點:











l         新對象存取成分對象的唯一方法是通過成分對象的接口。











l         這種復用是黑箱復用,隱藏了成分對象的內部細節。











l         這種復用支持包裝。











l         這種復用依靠性較小。(耦合度低)











l         每一個新類可以將焦點集中在一個任務上。











l         這種復用可以在運行時動態進行。新對象可以動態引用于成分對象類型的子對象。











缺點就是:











通過這種復用建造的系統通常會有較多的對象需要治理。











“合成聚合復用可以替代繼續復用完成任一項功能。”











盡管繼續是一種非常重要的手段但是,應當首先考慮合成聚合。











 











迪米特法則------LoD











又叫最少知識原則:一個對象應當對其他對象盡可能少的理解。











幾種表述:











l         至于你直接的朋友們通信。











l         不要跟“生疏人”說話。











l         每一個軟件單位對其他單位用有盡可能少的知識,而且局限于那些于本單位密切相關的軟件單位。











關于“朋友”的約定:











l         當前對象本身(THIS)。











l         以參數形式傳入到當前對象方法中的對象。











l         當前對象的實例變量直接引用的對象。











l         當前對象的實例變量假如是個聚集那么聚集中的元素也是“朋友”。











l         當前對象創建的對象。











廣義迪米特法則











 











軟件系統中,一個模塊設計的好不好最主要、最重要的標志,就是該模塊在多大程度上將自己的內部數據和其他實現細節隱藏起來。一個設計好的模塊可以將它所有的實現細節隱藏起來,很徹底的將提供給外界的API和自己的實現分離開來。這樣一來模塊于模塊之間的通信僅僅通過彼此的API,而不理會模塊內部的工作細節。這便是:“信息的隱藏”—“封裝”。











 











廣義迪米特法則要求:











l         在類的劃分上,應當創建弱耦合的類。類之間的耦合性越低,越有利于復用。











l       &nbs

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 论坛| 浮山县| 沙坪坝区| 太保市| 胶州市| 方山县| 大方县| 五家渠市| 和龙市| 通河县| 吐鲁番市| 富锦市| 梁山县| 鄯善县| 林西县| 洛浦县| 米易县| 雷山县| 油尖旺区| 边坝县| 通化市| 抚州市| 岳普湖县| 浠水县| 黄龙县| 赞皇县| 老河口市| 宣武区| 绿春县| 循化| 苗栗市| 五大连池市| 兖州市| 介休市| 甘谷县| 皋兰县| 丰城市| 彩票| 惠州市| 红桥区| 和静县|