2021-6-21 前端達人
從我們開始接觸Java這門語言后,就有人告訴我們這是一個面向?qū)ο蟮恼Z言。說的最多的是new個對象,其實并不知道什么是對象。以為對象就是一個class(類),并不覺得有什么特殊。直到很久之后,面試官問到什么是OOP,嘴巴都是一個大O,OOP?WTF?那人厭惡的說到就是面向?qū)ο缶幊獭N艺f:Java就是面向?qū)ο螅褪且磺幸詫ο鬄檩d體,去編程,去面對。面試官: go out ! now!
滾回來的我趕緊看看什么是OOP,Object Oriented Programming,原來就是面向?qū)ο蟮木幊贪。€有OOD(面向?qū)ο蟮脑O計),OOA(面向?qū)ο蟮姆治觯D鞘裁词敲嫦驅(qū)ο竽兀恳肓私膺@個問題我們要先了解面向過程,這樣對比我們就好理解了。
很早很早以前的編程是面向過程的,比如實現(xiàn)一個算術運算1+1 = 2,通過這個簡單的算法就可以解決問題。但是隨著時代的進步,人們不滿足現(xiàn)有的算法了,因為問題越來越復雜,不是1+1那么單純了,比如一個班級的學生的數(shù)據(jù)分析,這樣就有了對象這個概念,一切事物皆對象。將現(xiàn)實的事物抽象出來,注意抽象這個詞是重點啊,把現(xiàn)實生活的事物以及關系,抽象成類,通過繼承,實現(xiàn),組合的方式把萬事萬物都給容納了。實現(xiàn)了對現(xiàn)實世界的抽象和數(shù)學建模。這是一次飛躍性的進步。
舉個最簡單點的例子來區(qū)分 面向過程和面向?qū)ο?
有一天你想吃魚香肉絲了,怎么辦呢?你有兩個選擇
1、自己買材料,肉,魚香肉絲調(diào)料,蒜苔,胡蘿卜等等然后切菜切肉,開炒,盛到盤子里。
2、去飯店,張開嘴:老板!來一份魚香肉絲!
看出來區(qū)別了嗎?這就是1是面向過程,2是面向?qū)ο蟆?
面向?qū)ο笥惺裁磧?yōu)勢呢?首先你不需要知道魚香肉絲是怎么做的,降低了耦合性。如果你突然不想吃魚香肉絲了,想吃洛陽白菜,對于1你可能不太容易了,還需要重新買菜,買調(diào)料什么的。對于2,太容易了,大喊:老板!那個魚香肉絲換成洛陽白菜吧,提高了可維護性。總的來說就是降低耦合,提高維護性!
面向過程是具體化的,流程化的,解決一個問題,你需要一步一步的分析,一步一步的實現(xiàn)。
面向?qū)ο笫悄P突模阒恍璩橄蟪鲆粋€類,這是一個封閉的盒子,在這里你擁有數(shù)據(jù)也擁有解決問題的方法。需要什么功能直接使用就可以了,不必去一步一步的實現(xiàn),至于這個功能是如何實現(xiàn)的,管我們什么事?我們會用就可以了。
面向?qū)ο蟮牡讓悠鋵嵾€是面向過程,把面向過程抽象成類,然后封裝,方便我們我們使用的就是面向?qū)ο罅恕?
面向過程:
優(yōu)點:性能比面向?qū)ο蠛茫驗轭愓{(diào)用時需要實例化,開銷比較大,比較消耗資源。
缺點:不易維護、不易復用、不易擴展.
優(yōu)點:易維護、易復用、易擴展,由于面向?qū)ο笥蟹庋b、繼承、多態(tài)性的特性,可以設計出低耦合的系統(tǒng),使系統(tǒng) 更加靈活、更加易于維護 .
缺點:性能比面向過程差
1、封裝
隱藏對象的屬性和實現(xiàn)細節(jié),僅對外提供公共訪問方式,將變化隔離,便于使用,提高復用性和安全性。
2、繼承
提高代碼復用性;繼承是多態(tài)的前提。
3、多態(tài)
父類或接口定義的引用變量可以指向子類或具體實現(xiàn)類的實例對象。提高了程序的拓展性。
1、單一職責原則SRP(Single Responsibility Principle)
類的功能要單一,不能包羅萬象,跟雜貨鋪似的。
2、開放封閉原則OCP(Open-Close Principle)
一個模塊對于拓展是開放的,對于修改是封閉的,想要增加功能熱烈歡迎,想要修改,哼,一萬個不樂意。
3、里式替換原則LSP(the Liskov Substitution Principle LSP)
子類可以替換父類出現(xiàn)在父類能夠出現(xiàn)的任何地方。比如你能代表你爸去你姥姥家干活。哈哈~~
4、依賴倒置原則DIP(the Dependency Inversion Principle DIP)
高層次的模塊不應該依賴于低層次的模塊,他們都應該依賴于抽象。抽象不應該依賴于具體實現(xiàn),具體實現(xiàn)應該依賴于抽象。就是你出國要說你是中國人,而不能說你是哪個村子的。比如說中國人是抽象的,下面有具體的xx省,xx市,xx縣。你要依賴的是抽象的中國人,而不是你是xx村的。
5、接口分離原則ISP(the Interface Segregation Principle ISP)
設計時采用多個與特定客戶類有關的接口比采用一個通用的接口要好。就比如一個手機擁有打電話,看視頻,玩游戲等功能,把這幾個功能拆分成不同的接口,比在一個接口里要好的多。
1、抽象會使復雜的問題更加簡單化。
2、從以前面向過程的執(zhí)行者,變成了張張嘴的指揮者。
3、面向?qū)ο蟾先祟惖乃季S,面向過程則是機器的思想
藍藍設計建立了UI設計分享群,每天會分享國內(nèi)外的一些優(yōu)秀設計,如果有興趣的話,可以進入一起成長學習,請掃碼藍小助,報下信息,藍小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務合作,也請與我們聯(lián)系。
分享此文一切功德,皆悉回向給文章原作者及眾讀者.
藍藍設計( m.paul-jarrel.com )是一家專注而深入的界面設計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網(wǎng)站建設 、平面設計服務
作者:豬_隊友
鏈接:https://www.jianshu.com/p/7a5b0043b035
來源:簡書