對面向過程,對象,接口,切面的理解

我對面向過程,對象,接口,切面的理解

--模範青蛙

 

1.面向過程

面向過程是最爲實際的一種思考方式,就算是面向對象的方法也是含有面向過程的思想.可以說面向過程是一種基礎的方法.它考慮的是實際地實現.一般的面向過程是從上往下步步求精.所以面向過程最重要的是模塊化的思想方法.

隨着時代的進步,軟件的規模越來越大越來越複雜,需求變化也越來越快,面向過程就顯得力不從心了,如果我們根據需求變化修改了某個結構體,那麼就不得不修改與之相關的所有過程函數,而一個過程函數的修改,往往又會涉及到其他數據結構,

如果僅僅是在系統規模較小的項目中,面向過程還勉強可以應付,當系統規模越來越大的時候,多人共同開發的時候,就變得十分困難了。

 《面向過程思想》舉個例子:把大象裝冰箱要分幾步?

1.把冰箱門打開

2.計算大象的體積

3.查看冰箱容量

。。。。。。

4.把大象裝進去

5.把冰箱門關上

如果我不想把大象放冰箱裏了,我想把燒雞裝冰箱裏,這時候,計算燒雞的體積,冰箱的容量。。。。都需要修改。

面對這種軟件危機,軟件行業的精英必須爲以後的發展,開闢新的空間,面向對象就在這個時候誕生了。

2.面向對象

面向對象的方法主要是把事物給對象化,對象包括屬性與行爲。面向對象的三個特徵是封裝,繼承和多態,封裝可以把問題中的數據和對數據進行處理的函數結合在一起,形成了一個整體的對象的概念。繼承用來對系統的擴展,在原有系統的基礎上,只要簡單的繼承關係,就可以完成系統的擴展。用多態來應對需求的變化,統一的接口,可以有不同的實現(好多人把面向對象和麪向接口分開來講,其實面向接口主要講的就是多態,爲了調理清晰,我也把面向接口分開單獨說一下)。

《面向對象思想》舉個例子:把大象裝冰箱要分幾步?

    只需要一步,就是你把你女朋友叫過來,讓她把大象趕到冰箱裏。女朋友就是你的對象,至於你女朋友怎麼做,就是對象的事兒啦。以後要好好善待女朋友,如果沒了女朋友,以後再有大象就沒法辦了。呵呵,這就是面向對象。

3.面向接口

面向接口編程,就是面向抽象編程。

意思是指在面向對象的系統中所有的類或者模塊之間的交互是由接口完成的。

一個對象實例只能賦值給與它類型相同的引用、或者父類(包括接口)的引用。

接口就好比是一個公司的領導,某天領導A下了一條命令,讓員工B把大象裝冰箱裏,員工B幹活慢,領導就發火了,還想不想幹了,公司不是沒有你就不行了,不想幹隨時有人來接替你,於是領導就讓員工C按照領導的指示把大象裝冰箱裏了。這就是面向接口編程。

舉個例子:A a=new B();

在內存堆中創建一個B對象,在內存棧中創建一個引用A,A指向B。用A中的a.put()方法去調用B中的同名方法,這當然是正確的,因爲B類實現了A接口。B是A的實現類所以B的實例可以賦值給A的引用。

這個耦合度是指:一個類(或者對象)對另一個類(或者對象)的依賴。a這個對象具有A接口規定的一切方法(B類裏強制必須實現的)。

如果用類的繼承,要求所有的具有某一個方法的一類對象都必須是指定類的子類對象,總是存在依賴,應用靈活度非常差!

如果使用接口,我們可以把B這個類換成別的類來實現這個接口,同樣可以實現接口中的方法,這樣就降低了程序之間的耦合度,因爲我們在具體的調用處都是接口進行的,並不依賴於具體類,B類可以換成是任意的類,只要實現了A這個接口就可以調用他的方法,完成相應的功能。

4.面向切面:

面向切面的編程 主要實現的目的是針對業務處理過程中的切面進行提取,它所面對的是處理過程中的某個步驟或階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果。面向對象編程將程序分解成各個層次的對象,而面向切面編程將程序運行過程分解成各個切面。

面向對象編程是從靜態角度考慮程序結構,而面向切面編程則是從動態角度考慮程序運行過程。

面向對象編程是以對象爲核心,整個項目都是由一系列相互依賴的對象組成的,而這些對象將被抽象成一個類,並允許使用類繼承來管理類與類之間一般到特殊的關係。

面向對象可以通過分析抽象出一系列具有一定屬性和行爲的類,並通過這些類之間的協作來形成一個完整的軟件功能。由於類可以繼承,因此可以把具有相同功能或相同特性的屬性抽象到一個層次分明的類結構體系中。隨着軟件規範的不斷擴大,專業劃分工越來越細緻,以及OOP應用實踐的不斷增多,隨之也暴露了一些OOP無法很好解決的問題。

說了這麼多,還是來舉個例子吧,要把大象裝冰箱總共分幾步。。。

這個大家都知道,如果這時候我改了需求呢?要求大象必須是洗過澡的,不能臭烘烘的放冰箱裏,還要求大象在冰箱裏不能被凍感冒了。。。。(有點奇葩了。。。)

但是又跟對象說好了,他只負責把大象裝冰箱,於是自己偷偷找人在對象把大象裝冰箱之前,給大象洗了個澡,換了身衣服,又吩咐手下,在對象把大象裝冰箱之後,把電源拔掉,不能讓大象感冒了。然後就叫對象過來把大象裝冰箱裏,但是給大象洗澡,換衣服,拔電源這是事兒對象並不知道。這就是面向切面(找一個切入點,把要辦的事兒給辦了)。AOP專門用於處理系統中分佈於各個模塊中(不同方法)的交叉關注點的問題,在java EE應用中,經常通過AOP來處理一些具有橫切性質的系統服務,如事務管理,安全檢查,緩存,對象池管理等。

 

 

發佈了35 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章