面向?qū)ο?/h1>

2018-05-03 17:41 更新

筆者能力有限,總結(jié)有誤的地方,請讀者協(xié)作更正。

1.OOP思想

面向?qū)ο缶幊趟枷?/p>

面向過程的的編程思想:致上而下,逐步細(xì)化。

例如:考試 報(bào)名-->繳費(fèi)-->打印準(zhǔn)考證-->考試-->查詢分?jǐn)?shù)

  • 面向?qū)ο?/li>

萬物皆對象,按照現(xiàn)實(shí)世界的邏輯去處理問題。

比如:發(fā)明汽車和組裝汽車

發(fā)明汽車,輪子需要我們自己設(shè)計(jì),發(fā)動(dòng)機(jī)需要我們自己設(shè)計(jì),圖紙需要我們自己設(shè)計(jì),所有的零件都需要我們自己設(shè)計(jì)。

組裝汽車,需要什么型號(hào)的輪子買什么型號(hào)的輪子,需要什么品牌的發(fā)動(dòng)機(jī),買什么品牌的發(fā)動(dòng)機(jī),需要什么直接去買,因?yàn)橐粋€(gè)一零部件就是一個(gè)個(gè)封裝好的對象,我們直接調(diào)用就可。

面向?qū)ο笥兴膫€(gè)基本特征:抽象,封裝、繼承、多態(tài),這幾個(gè)特征實(shí)現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)的模塊化開發(fā),提綱了模塊化對象的重用性。

1)抽象

抽象類和抽象方法:

  • 在java中,類、方法、接口可以定義為抽象,使用abstract修飾, 變量不可以抽象。
  • 抽象方法只能定義在抽象類中,抽象方法只定義方法聲明,并沒有定義具體實(shí)現(xiàn),在抽象類中定義抽象抽象方法的目的,僅僅是為了讓該類不能被實(shí)現(xiàn)化。
  • ?抽象類不可以被實(shí)例化,只有通過子類繼承之后重寫父類中的方法,才可以被實(shí)例化。
  • 抽象類中有構(gòu)造函數(shù),作用是用于給子類對象進(jìn)行初始化,抽象類中可以定義普通方法。
  • 抽象關(guān)鍵字abstract不能與final,private,static共存。

接口:

用interface定義,接口中包含全局變量,抽象方法。

接口不可以實(shí)例化,需要子類去實(shí)現(xiàn),子類才可以實(shí)例化,否則該子類還是抽象類。

接口中的訪問修飾符,必須是有public;

接口可以多實(shí)現(xiàn),使用接口的目的是方便擴(kuò)展功能,或者解耦等。

2)封裝

封裝就是隱藏對象的屬性和具體實(shí)現(xiàn)細(xì)節(jié),對外提供訪問的權(quán)限;提供對象的重用性,安全性。

訪問權(quán)限修飾符:public,protected,默認(rèn)的,private

3)多態(tài)

多態(tài)就是事物在不同環(huán)境下的具體體現(xiàn),java中的多態(tài)體現(xiàn)在 繼承 和 接口實(shí)現(xiàn) 上。

多態(tài)要求有關(guān)系,要么是繼承關(guān)系,要么是實(shí)現(xiàn)關(guān)系。

通常會(huì)有覆蓋方法的操作,子類繼承父類重寫其中的方法,或者子類實(shí)現(xiàn)接口,實(shí)現(xiàn)其中的方法。

多態(tài)的使用常常涉及到向上造型,子類對象調(diào)用父類中的方法。

多態(tài)的好處:提高了程序的擴(kuò)展性。

2.面向切面思想

AOP是OOP的補(bǔ)充,軟件設(shè)計(jì)的時(shí)候存在許多橫切關(guān)注點(diǎn),比如:日志記錄,安全監(jiān)控,異常處理等。它們的代碼和具體業(yè)務(wù)的代碼混合在一起,破壞了OOP的“單一設(shè)計(jì)”原則,重用性大大降低。

傳統(tǒng)的OOP是通過代理模式解決,讓整個(gè)系統(tǒng)增加了一個(gè)層次的劃分,較為復(fù)雜,代碼過于厚重。AOP技術(shù)由此產(chǎn)生。

它和OOP在本質(zhì)上存在區(qū)別。

1)AOP的作用:

將日志記錄,性能統(tǒng)計(jì),事物處理,異常處理,安全控制等橫切關(guān)注點(diǎn),非常重要又和主業(yè)務(wù)邏輯關(guān)系不大的部分橫切出來,獨(dú)立成模塊,在主業(yè)務(wù)邏輯中橫向調(diào)用,作用是降低耦合,易維護(hù),擴(kuò)展等。

2)AOP的基本概念:

類,對象,封裝,繼承,多態(tài)是描述OOP的基本術(shù)語;

連接點(diǎn)(JointPoint),切入點(diǎn)(PointCut),通知(Advice),方面(Aspect),織入(Weaving),目標(biāo)(Target),引入(Introduction)是描述AOP的基本術(shù)語。

例如,圖:

軟件設(shè)計(jì)劃分為很多主業(yè)務(wù)邏輯模塊,這些主業(yè)務(wù)邏輯都需要進(jìn)行日志處理,安全處理,事物處理等,將日志,事物,安全這些橫切關(guān)注點(diǎn)抽取處理,單獨(dú)封裝成對象,在主業(yè)務(wù)邏輯中織入橫切關(guān)注點(diǎn)對象,降低代碼的耦合性,提高重用性。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)