麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 課堂 > 技術開發 > 正文

面向對象設計的11原則

2023-06-23 14:40:21
字體:
來源:轉載
供稿:網友

面向對象設計是什么?都包含了哪些內容?它所帶來的好處是什么?需要你為之付出些什么?在如今這個年代,問這些問題似乎顯得很愚蠢,因為這年頭幾乎每位軟件開發人員都知道如何使用某種面向對象編程語言。可是這個問題還是很重要,因為在我看來,絕大多數人在使用這些語言的時候并不知道為什么,而且也不知該如何最充分的運用它們。

軟件業曾經爆發過的所有變革里,其中曾經有兩個派系如此廣泛的深入人心,它們就是結構化編程和面向對象編程。所有主流的現代編程語言都被它們兩個激烈的影響著。實際上,要想不像結構化和面向對象編程的樣子來編寫程序都是一件難事。我們的主流編程語言都沒有goto,因此它們服從了結構化編程中最重要的禁令。我們的大多數主流編程語言都是基于類的,而且不支持在類以外定義函數或是變量,因此也避免了面向對象編程中最容易墜入的陷阱。

用這些編程語言所編寫的程序可能看起來是結構化的或是面向對象的,可是“看起來”是會欺騙人的。當今的編程語言經常不顧他們所從屬那種派系的編程語言的基本原則。我會在另篇blog中再探討結構化編程的原則,本篇,我想要談論的是面向對象編程的基本原則。

在1995年的三月,我寫了一篇文章并發表在comp.object上,那是我第一次寫OOD(譯注1)原則的文章,此后就一發不可收拾的寫了很多。你可以在我的PPP一書(譯注2)中看到它們,在object mentor的很多文章中也都有,其中就有那篇眾所周知的綱要(近期會譯為中文,請關注)。

這些原則著重于OOD中的依賴管理方面,而淡化抽象與建模方面。這并不是說OO在抽象方面不夠強大,或是OO不適合構建模型。當然有很多人都在使用OO的這些部分,只是這些原則集中關注于依賴管理。

依賴管理是我們每個人都要面對的問題,每當我們在屏幕面前打開那些彼此糾結又令人作嘔的代碼,我們就會遭受不良的依賴管理所帶來的惡果。不良的依賴管理導致代碼難以改變,易被破壞,而且不可重用。實際上,我在PPP一書中談論過很多不同的設計壞味道,而這些都與依賴管理有關。從另一方面來說,如果依賴經過了良性的管理,代碼就可以保持靈活性、健壯性和重用性。所以依賴管理和這些相關原則是程序員們渴求的讓軟件保持優良架構的基石。

頭五項原則是關于類設計的,它們是:

(1)SRP,單一職責原則,一個類應該有且只有一個改變的理由。

(2)OCP,開放封閉原則,你應該能夠不用修改原有類就能擴展一個類的行為。

(3)LSP,Liskov替換原則,派生類要與其基類自相容。

(4)DIP,依賴倒置原則,依賴于抽象而不是實現。

(5)ISP,接口隔離原則,客戶只要關注它們所需的接口。

另外的六項是關于包的設計原則。在本文中,包是指一個二進制的可發布文件,比如.jar文件、或dll文件,而不是Java包或是C++的命名空間(譯注3)。

頭三項包原則是關于包內聚性的,它們會告訴我們該把什么劃分到包中:

(1)REP,重用發布等價原則,重用的粒度就是發布的粒度。

(2)CCP,共同封閉原則,包中的所有類對于同一類性質的變化應該是共同封閉的。

(3)CRP,共同重用原則,一個包中的所有類應該是共同重用的。

最后的三項原則是關于包之間的耦合性原則的,并且論述了評價系統中包結構優良與否的評判標準。

(1)ADP,無環依賴原則,在包的依賴關系圖中不允許存在環。

(2)SDP,穩定依賴原則,朝著穩定的方向進行依賴。

(3)SAP,穩定抽象原則,包的抽象程度應該和其穩定程度一致。 

譯注:

【1】OOD,全稱Object Oriented Design,即面向對象設計。

【2】PPP,即Bob大叔的著作《敏捷軟件開發 原則、模式與實踐》一書以及其相關書籍,因都有“原則、模式與實踐”,即Priciples, Patterns and Practices,故常簡稱為PPP。

【3】命名空間,原文為namespace,也譯作名字空間。它是一種特殊的作用域,它包含了處于該作用域內的所有標示符,且本身也用一個標示符來表示,這樣便于將一系列在邏輯上相關的標示符用一個標示符來組織。就Java編程語言來說,命名空間是通過java包來表達的,所有代碼都歸屬與一個包。來自其他包中的代碼要通過指定包名來引用某項特定的標示符,例如,包java.lang中的String類要通過java.lang.String的形式引用。在C++中,命名空間常用來避免命名沖突,盡管現今的C++語言對命名空間做出了擴展,但過去的C++代碼很少使用此項功能。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久草在线手机视频 | 午夜精品在线视频 | 精品一区免费 | 成人国产精品免费 | 在线看一区二区三区 | 色中色在线播放 | 91精品国产91久久久久久 | 成人羞羞在线观看网站 | 国产成人精品一区在线播放 | 99国产精品国产免费观看 | 日韩黄色一区 | 国产成年人视频 | 中文字幕激情视频 | 老a影视网站在线观看免费 国产精品久久久久久久久久尿 | 成人在线视频免费观看 | 毛片免费观看视频 | 久久久噜噜噜久久熟有声小说 | 国产免费久久久 | 日韩视频不卡 | 久色免费视频 | 亚洲第一视频在线 | 黄色特级视频 | 日本高清无遮挡 | 精品一区二区三区在线观看视频 | 嫩草影院在线观看网站成人 | 亚洲精品3 | 欧美片一区二区 | 日美av在线 | 爽妇网国产精品 | 国产88久久久国产精品免费二区 | 免费男女视频 | 黄色三级三级三级 | 亚洲一区二区三区精品在线观看 | 久久亚洲网 | 成人一级视频在线观看 | 黄色网址免费在线播放 | 九色激情网 | 黄色成年在线观看 | 亚洲一区二区中文 | 91不雅视频 | 日韩黄色一级视频 |