淺談對(duì)面向?qū)ο蟮睦斫?/h1>

為什么要使用面向?qū)ο蟮乃枷雭砜创龁栴}课蔬?

? ? ?1.面向?qū)ο蟾谖覀兛创龁栴}郊尝,它使得我們看待問題變得清晰化。對(duì)于問題我們只需要了解問題所牽扯到的對(duì)象有哪些流昏,它們?cè)谶@個(gè)問題中都有著哪些行為即可况凉。

? ? ? 2.面向?qū)ο笞畲蟮母淖儜?yīng)該是我們看待問題高度發(fā)生改變。在利用面向過程的思想看待問題時(shí)只是關(guān)注程序的變量刁绒,語句,表達(dá)式的合理性知市,關(guān)注代碼塊的功能。而利用面向?qū)ο蟮乃枷脒M(jìn)行設(shè)計(jì)時(shí)娘赴,我們只需關(guān)注對(duì)象與對(duì)象之間關(guān)系跟啤。而具體的實(shí)現(xiàn)細(xì)節(jié)是由對(duì)象的方法來實(shí)現(xiàn)的。但并不是說面向過程就一無是處关顷,對(duì)于對(duì)象里的方法還是要利用面向過程的思想的武福。

面向?qū)ο蟮奶匦?/h2>

? ? ? ?繼承是面向?qū)ο缶幊趟枷胫兄匾囊徊糠帧:?jiǎn)單的講就是從一個(gè)已有的類中派生出新的類捉片。來實(shí)現(xiàn)一些父類沒有的功能。父類允許子類繼承它的方法宗雇,如果父類中有些方法和子類中的方法發(fā)生沖突莹规,子類可以重寫該方法。子類也可以實(shí)現(xiàn)父類的所有功能。對(duì)于基類的設(shè)計(jì)過程欢际,我們應(yīng)該根據(jù)實(shí)際情況包含各種可能性矾兜。比如說有一個(gè)狗的類,任何一個(gè)品種的狗都可以繼承它椅寺,去實(shí)現(xiàn)自己細(xì)節(jié)返帕。但如果要實(shí)現(xiàn)貓的行為方式,顯然狗這個(gè)類就不適合了荆萤,應(yīng)該在往上走,去實(shí)現(xiàn)一個(gè)動(dòng)物的類观腊,就可以繼承這個(gè)類來實(shí)現(xiàn)貓的行為屬性算行。這樣做的目的是使程序具有較高的可擴(kuò)展性。繼承的優(yōu)點(diǎn)是州邢,提高代碼的復(fù)用性,降低工作量骗村。缺點(diǎn)是呀枢,如果父類的大部分功能子類都用不上,那么子類就顯得比較冗余了裙秋。

? ? ? ? 面向過程的實(shí)現(xiàn)過程就是變量在函數(shù)之間的不斷傳遞,使得函數(shù)之間進(jìn)行信息的交流來實(shí)現(xiàn)編程的需要的进宝。這樣的后果就是如果變量在某一函數(shù)中被改變了枷恕,會(huì)導(dǎo)致整個(gè)程序出錯(cuò)。對(duì)于面向?qū)ο髞碚f,信息之間的交流是以對(duì)象做為參數(shù)的灾而,調(diào)用的類只能使用該類的某些功能來實(shí)現(xiàn)自己的功能深胳。里面的信息對(duì)外界來說是不可見的,也無法改變類中的屬性轻庆。因?yàn)轭愔械膶傩源蠖喽际撬接械幕虮Wo(hù)的敛劝。這就體現(xiàn)了封裝性,封裝是將屬性和方法“打包”夸盟,屬性私有化或保護(hù)化,方法公有化桩砰,只能使用該類的方法來使用和改變?cè)擃惖膶傩允筒尽>秃孟袢艘粯樱热绯燥埵且粋€(gè)方法庶溶,那么吃多吃少是自己的事,與別人無關(guān)行疏。別人也不可能改變這個(gè)事實(shí)套像。

? ? ? ? 對(duì)于面向?qū)ο髞碚f,類相當(dāng)于一個(gè)模板货葬,一個(gè)抽象的概念劲够,對(duì)象才是類的實(shí)例化體現(xiàn),即是程序代碼的組成部分征绎。對(duì)于繼承了父類的多個(gè)子類而言磨取,重寫了父類的某些方法柴墩,方法名雖然相同,方法體不同逢净,實(shí)現(xiàn)過程不同歼指,即不同子類的該方法不同。使用父類類型定義的子類對(duì)象胀茵。調(diào)用不同子類的方法挟阻,產(chǎn)生的了不同結(jié)果,這種變化就叫多態(tài)性附鸽。尤其對(duì)于父類是抽象類來說,由于父類中的方法未定義挪拟,不同子類繼承父類后击你,可以重寫父類的方法谎柄。抽象類不能實(shí)例化對(duì)象,只能被繼承朝巫,一般作為基類劈猿。

面相對(duì)象的原則

一.單一原則

? ? ? ?就一個(gè)類來說,類的功能應(yīng)該較為單一一點(diǎn)揪荣,不應(yīng)該是各種功能都包含在一起,這樣不利于代碼的維護(hù)佛舱,容易產(chǎn)生BUG,也破壞了類的本質(zhì)请祖。應(yīng)該是類中的所有方法都為某一功能服務(wù)。但并不是類分的越詳細(xì)越好刷晋,根據(jù)實(shí)際情況而定饮焦。

二.開閉原則

? ? ? ? 對(duì)于一個(gè)類來說兴喂,應(yīng)該是擴(kuò)展是開放的荆姆,修改是關(guān)閉的。隨著人們的對(duì)軟件功能的不斷期待和改變邮破,我們總是避免不了的要在原有的代碼的基礎(chǔ)上進(jìn)行變化仆救,但我們不可能對(duì)原有的代碼進(jìn)行修改,因?yàn)檫@可能使原有出現(xiàn)BUG彤蔽,所以擴(kuò)展是理所當(dāng)然的顿痪。這個(gè)就要通過繼承來實(shí)現(xiàn)了。

三.迪米特原則

? ? ? ? 一個(gè)類應(yīng)該降低對(duì)其它類的耦合度蚁袭,如果避免不了要與其它類產(chǎn)生關(guān)聯(lián)的話,應(yīng)該避免對(duì)其它類的了解卖哎。保持類的封裝性特點(diǎn)删性。如果兩個(gè)類之間耦合度較高的話,一個(gè)類的改變會(huì)影響另一個(gè)類维贺,而面向?qū)ο蟮脑瓌t是程序之間的類應(yīng)該是很少關(guān)聯(lián)的各個(gè)類執(zhí)行自己的功能就好巴帮。

對(duì)象之間的關(guān)系

泛化關(guān)系是對(duì)象之間耦合度最大的一種關(guān)系群发,就是繼承關(guān)系发乔。在JAVA中接口就類似于抽象類,它是方法說明的集合栏尚,子類繼承接口译仗,并實(shí)現(xiàn)接口中的方法,就是實(shí)現(xiàn)關(guān)系纵菌。在程序中,有時(shí)候避免不了的要把某一個(gè)對(duì)象做為參數(shù)笛辟,局部變量序苏,返回值,讓另一個(gè)對(duì)象調(diào)用完成該類的某些功能围来。這就是依賴關(guān)系匈睁。聚合關(guān)系是整體包含局部的概念。例如班級(jí)與學(xué)生之間的關(guān)系航唆。組合關(guān)系是一種強(qiáng)烈的包含關(guān)系佛点。例如學(xué)校和班級(jí)之間的關(guān)系黎比,公司和部門之間的關(guān)系。聚合關(guān)系和組合關(guān)系的區(qū)別就在于阅虫,聚合關(guān)系中的的局部可以獨(dú)立存在,例如這個(gè)班級(jí)被取消了米碰,不能說明班里的學(xué)生就不是學(xué)生了。組合關(guān)系而言吕座,整體的生命周期和局部的生命周期是息息相關(guān)的吴趴,如果整體不存在了,局部肯定不存在了锣枝,例如公司倒閉了,那么它其中的某一個(gè)部門肯定也不會(huì)存在供鸠。

總結(jié)

? ? ? ? 所謂面向?qū)ο缶帉懙某绦蛟赡郑褪峭ㄟ^不同對(duì)象的實(shí)現(xiàn)來實(shí)現(xiàn)整個(gè)功能。重點(diǎn)還是如何合理的設(shè)置對(duì)象泡一,以及對(duì)程序的包容性觅廓,即你要考慮將來可能會(huì)改變某一功能或添加某一功能。對(duì)程序的升級(jí)杈绸。還有就是在滿足程序功能的前提下保持低耦合度。

五子棋UML類圖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者

  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市劫侧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌写妥,老刑警劉巖审姓,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異扎筒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)奥溺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門症脂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人壶唤,你說我怎么就攤上這事棕所。” “怎么了迎吵?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵针贬,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蔫巩,道長(zhǎng)快压,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任坪郭,我火速辦了婚禮脉幢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沪曙。我一直安慰自己豆瘫,他們只是感情好菊值,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布育灸。 她就那樣靜靜地躺著磅崭,像睡著了一般瓦哎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蒋譬,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天犯助,我揣著相機(jī)與錄音,去河邊找鬼剂买。 笑死,一個(gè)胖子當(dāng)著我的面吹牛婚肆,可吹牛的內(nèi)容都是我干的坐慰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼两残,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼把跨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起崔赌,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤健芭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后慈迈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體省有,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谴麦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年匾效,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恤磷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡魔策,死狀恐怖河胎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搁吓,我是刑警寧澤吭历,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站摩骨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏朗若。R本人自食惡果不足惜恼五,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哭懈。 院中可真熱鬧灾馒,春花似錦、人聲如沸遣总。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旭斥。三九已至容达,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間垂券,已是汗流浹背花盐。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留算芯,地道東北人啄栓。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像也祠,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子近速,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容