成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

四大UML類設計原則詳盡解讀

開發(fā) 架構
UML類設計原則你是否熟悉,現(xiàn)在不少OO先驅提出了很多有關面向對象的設計原則用于指導OO的設計和開發(fā)。本文就向大家介紹一下與UML類設計相關的幾條原則。

本文和大家重點討論一下UML類設計原則,主要包括開閉原則,替換原則,依賴原則和接口分離原則四種,希望通過本文的學習你對UML類設計原則有全面的認識。

面向對象的設計原則-UML類設計原則

在面向對象設計中,如何通過很小的設計改變就可以應對設計需求的變化,這是令設計者極為關注的問題。為此不少OO先驅提出了很多有關面向對象的設計原則用于指導OO的設計和開發(fā)。下面是幾條與類設計相關的設計原則。

1.開閉原則(theOpenClosedPrincipleOCP)

UML類設計原則中開閉原則是指一個模塊在擴展性方面應該是開放的而在更改性方面應該是封閉的。因此在進行面向對象設計時要盡量考慮接口封裝機制、抽象機制和多態(tài)技術。該原則同樣適合于非面向對象設計的方法,是軟件工程設計方法的重要原則之一。

我們以收音機的例子為例,講述面向對象的開閉原則。我們收聽節(jié)目時需要打開收音機電源,對準電臺頻率和進行音量調節(jié)。但是對于不同的收音機,實現(xiàn)這三個步驟的細節(jié)往往有所不同。比如自動收縮電臺的收音機和按鈕式收縮在操作細節(jié)上并不相同。因此,我們不太可能針對每種不同類型的收音機通過一個收音機類來實現(xiàn)(通過重載)這些不同的操作方式。但是我們可以定義一個收音機接口,提供開機、關機、增加頻率、降低頻率、增加音量、降低音量六個抽象方法。不同的收音機繼承并實現(xiàn)這六個抽象方法。這樣新增收音機類型不會影響其它原有的收音機類型,收音機類型擴展極為方便。此外,已存在的收音機類型在修改其操作方法時也不會影響到其它類型的收音機。

圖1是一個應用OCP生成的收音機類圖的例子:

 

圖1OCP應用(收音機)

2.替換原則(theLiskovSubstitutionPrincipleLSP)

子類應當可以替換父類并出現(xiàn)在父類能夠出現(xiàn)的任何地方。UML類設計原則中這個原則是Liskov于1987年提出的設計原則。它同樣可以從BertrandMeyer的DBC(DesignbyContract)的概念推出。

我們以學生為例,夜校生為學生的子類,因此在任何學生可以出現(xiàn)的地方,夜校生均可出現(xiàn)。這個例子有些牽強,一個能夠反映這個原則的例子時圓和橢圓,圓是橢圓的一個特殊子類。因此任何出現(xiàn)橢圓的地方,圓均可以出現(xiàn)。但反過來就可能行不通。

Liskov的相關圖示見圖2:

 

圖2Liskov原則

運用替換原則時,我們盡量把類B設計為抽象類或者接口,讓C類繼承類B(接口B)并實現(xiàn)操作A和操作B,運行時,類C實例替換B,這樣我們即可進行新類的擴展(繼承類B或接口B),同時無須對類A進行修改。#p#

3.依賴原則(theDependencyInversionPrincipleDIP)

在進行業(yè)務設計時,與特定業(yè)務有關的依賴關系應該盡量依賴接口和抽象類,而不是依賴于具體類。具體類只負責相關業(yè)務的實現(xiàn),修改具體類不影響與特定業(yè)務有關的依賴關系。

在結構化設計中,我們可以看到底層的模塊是對高層抽象模塊的實現(xiàn)(高層抽象模塊通過調用底層模塊),這說明,抽象的模塊要依賴具體實現(xiàn)相關的模塊,底層模塊的具體實現(xiàn)發(fā)生變動時將會嚴重影響高層抽象的模塊,顯然這是結構化方法的一個"硬傷"。

面向對象方法的依賴關系剛好相反,具體實現(xiàn)類依賴于抽象類和接口(見圖-3)。

為此,我們在進行業(yè)務設計時,應盡量在接口或抽象類中定義業(yè)務方法的原型,并通過具體的實現(xiàn)類(子類)來實現(xiàn)該業(yè)務方法,業(yè)務方法內容的修改將不會影響到運行時業(yè)務方法的調用。

 

圖3依賴原則圖示

4.接口分離原則(theInterfaceSegregationPrincipleISP)

采UML類設計原則中用多個與特定客戶類有關的接口比采用一個通用的涵蓋多個業(yè)務方法的接口要好。

ISP原則是另外一個支持諸如COM等組件化的使能技術。缺少ISP,組件、類的可用性和移植性將大打折扣。

這個原則的本質相當簡單。如果你擁有一個針對多個客戶的類,為每一個客戶創(chuàng)建特定業(yè)務接口,然后使該客戶類繼承多個特定業(yè)務接口將比直接加載客戶所需所有方法有效。

圖4展示了一個擁有多個客戶的類。它通過一個巨大的接口來服務所有的客戶。只要針對客戶A的方法發(fā)生改變,客戶B和客戶C就會受到影響。因此可能需要進行重新編譯和發(fā)布。這是一種不幸的做法。

 

圖4帶有集成接口的服務類

我們再看圖-5中所展示的技術。每個特定客戶所需的方法被置于特定的接口中,這些接口被Service類所繼承并實現(xiàn)。

 

圖5使用接口分離的服務類設計

如果針對客戶A的方法發(fā)生改變,客戶B和客戶C并不會受到任何影響,也不需要進行再次編譯和重新發(fā)布。

以上四個UML類設計原則是面向對象中常常用到的原則。此外,除上述四原則外,還有一些常用的經(jīng)驗諸如類結構層次以三到四層為宜、類的職責明確化(一個類對應一個具體職責)等可供我們在進行面向對象設計參考。但就上面的幾個原則看來,我們看到這些類在幾何分布上呈現(xiàn)樹型拓撲的關系,這是一種良好、開放式的線性關系、具有較低的設計復雜度。一般說來,在軟件設計中我們應當盡量避免出現(xiàn)帶有閉包、循環(huán)的設計關系,它們反映的是較大的耦合度和設計復雜化。

【編輯推薦】

  1. 技術分享 UML類圖建模技術揭秘
  2. UML解惑:圖說六大UML類圖關系
  3. 深入剖析四大UML類圖依賴關系
  4. 五大UML建模工具免費體驗
  5. UML類圖關系中關聯(lián) 聚合 依賴關系及其區(qū)別


 

責任編輯:佚名 來源: csdn.net
相關推薦

2010-07-05 09:34:45

UML類關系圖

2010-07-07 11:02:47

UML類圖關系

2010-06-18 14:43:28

UML關系圖

2010-07-05 09:48:00

UML類關系圖

2010-07-02 14:34:53

UML類圖

2010-07-08 15:56:52

UML類圖依賴關系

2024-11-22 14:28:00

2010-06-30 10:16:56

UML建模

2010-07-06 10:30:58

UML關系圖

2010-07-05 11:12:43

常用UML圖

2019-06-05 13:00:36

2010-07-09 14:28:59

UML組成

2010-07-01 14:13:51

UML時序圖

2012-02-01 13:24:37

2011-07-07 08:53:15

真相TitaniumPhoneGap

2010-07-12 13:56:33

UML圖形

2015-07-23 17:01:53

app設計四大原則

2013-09-17 09:55:58

企業(yè)PC

2015-07-17 09:50:16

Carthage優(yōu)劣比較

2010-07-12 15:09:20

UML狀態(tài)機視圖
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美国产精品 | av一级毛片 | 91久久国产综合久久91精品网站 | 久久久成人动漫 | 9色视频在线| 精品一区二区三区四区外站 | 91久久精品一区二区二区 | 91视频一区二区三区 | 亚洲精品一区在线观看 | 99久久精品免费看国产免费软件 | 91毛片网| 久久综合一区 | 欧美综合在线视频 | 国产草草视频 | 亚洲精品久久国产高清情趣图文 | 国产一区2区 | 国产成人综合在线 | 精品一区二区久久久久久久网站 | 亚洲乱码一区二区三区在线观看 | 亚洲视频在线一区 | 韩日三级| 欧美一区成人 | 一区二区三区视频在线观看 | 九九热在线观看视频 | 伊人爽| 国产三级精品三级在线观看四季网 | av手机在线播放 | av网站免费 | 亚洲一级毛片 | 欧美综合一区 | 精品欧美黑人一区二区三区 | 欧美八区 | 中文字幕在线一 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 一区二区三区在线播放 | 日韩欧美一区二区三区免费观看 | 九一在线 | 亚洲欧美中文字幕在线观看 | 国产精品国产成人国产三级 | 久久久成人精品 | 久久人体视频 |