筆者能力有限,總結(jié)有誤的地方,請讀者協(xié)作更正。
1.OOP思想
面向?qū)ο缶幊趟枷?/p>
面向過程的的編程思想:致上而下,逐步細(xì)化。
例如:考試 報(bào)名-->繳費(fèi)-->打印準(zhǔn)考證-->考試-->查詢分?jǐn)?shù)
萬物皆對象,按照現(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)抽象
抽象類和抽象方法:
接口:
用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)對象,降低代碼的耦合性,提高重用性。
更多建議: