編程思想:面向過程——>面向對象編程
當下大多數編程語言都是面向對象編程的思想,在沒有提出面向對象這個思想以前,大多數人都是採用面向過程編程。編程語言
面向過程工具
面向過程的思想,就如同咱們人正常思考去如何作一件事的思考方式同樣。編碼
舉例說明面向過程的思考方式:spa
結論:面向過程面向的是完成這件事的過程,強調的是完成這件事的動做。設計
爲什麼要從面向過程轉向面向對象對象
繼續上面把大象塞進冰箱裏的例子,咱們來按照面向過程的步驟來實施這件事情,舉例說明以下:blog
1.張三把大象塞進冰箱裏:接口
張三,是個比較身材瘦小的人開發
張三踩着板凳打開冰箱門,張三找了一位大力士將大象塞進了冰箱,最後踩着板凳關閉冰箱門。
2. 李四把大象塞進冰箱裏:
李四,天生力大無窮高大威猛
李四無需依靠其餘工具直接打開冰箱門,李四徒手一人舉起大象塞進冰箱,而後本身關上冰箱門
以上的例子能夠看出,「把大象塞進冰箱裏」這件事卻由於不一樣的人不一樣的狀況,事情本來的處理的方式也發生了變化。
咱們能夠得出一個結論:
若是咱們用面向過程的思想來解決這件事,當執行這件事的人具備不一樣的狀況和差別的時候,咱們須要爲每一個不一樣的人所產生的差別來作針對性的處理。同理,將面向過程的編程方式帶入到實際的開發中,咱們開發的某一個功能模塊可能適用於當下的階段,當隨着軟件的使用新的業務需求就會隨之而來,若是咱們只按照當前的狀況以面向過程的思想去實現功能,在面臨改動面臨變化的時候,就要不斷去改動功能的代碼去適應新的變化。
這樣的方式,會投入很大成本和精力,並且隨着功能不斷的複雜度,在面臨新的需求來時,改動將更加困難,所謂牽一髮動全身。
面向對象
面向對象的思想的理解,是隨着在不斷的實踐、不斷的編碼的過程當中慢慢滲透掌握的。
我我的以爲評判一我的的編程能力高低,就能夠看他對面向對象編程掌握和理解的程度如何。
繼續「」把大象塞進冰箱裏「的例子,使用面向對象的思想模擬實現過程:
1.既然語義上強調對象,因此咱們常常遇到的問題就是找對象,找對象幫忙作事:
2.抽取共性(不變的),屏蔽差別(變化的),具備被動型,由於這樣才具用通用性不懼變化:
執行者:執行作事的人確定是不定的,變化的。
大象和冰箱:目的是塞進冰箱,即冰箱是一個被動者。後期也許不光是塞大象,可能會塞老虎。
冰箱貫穿整件事,出如今每一個步驟,因此,這裏能夠指定冰箱做爲對象完成這件事。
把冰箱做爲對象完成,」把大象塞進冰箱裏「這件事的方式:
1.冰箱門能夠被打開
2.大象能夠被塞進冰箱裏
3.冰箱門能夠被關閉
二者思考的對比:
面向對象:意在寫出一個通用的代碼,抽取共性(不變的),屏蔽差別(變化的)。
總結:
當咱們要以面向對象的思想去實現功能的時候,首先想着的是找對象來幫着作事情,並且要找被動型的對象,其餘的變化均可以抽象出對外的接口。
就比如如筆記本電腦USB就是一個很好的面向對象的設計思想,很早的時候筆記本沒有考慮到其餘的更多的外界設備,而是隻設定了幾個固定經常使用的接口,如鼠標、網線。隨着科技不斷的更新,外界設備接踵而來,因此爲了屏蔽差別就對外設定USB接口這種形式,筆記本無論要接入什麼設備,只要設備知足USB的標準就能夠對接。