發(fā)文章
發(fā)文工具
撰寫(xiě)
網(wǎng)文摘手
文檔
視頻
思維導(dǎo)圖
隨筆
相冊(cè)
原創(chuàng)同步助手
其他工具
圖片轉(zhuǎn)文字
文件清理
AI助手
留言交流
萬(wàn)物皆對(duì)象?No 抽象?No 復(fù)用?No
那到底是什么呢?
萬(wàn)物皆對(duì)象。問(wèn)了幾位網(wǎng)友,這是答復(fù)之一??吹搅四硞€(gè)事物就來(lái)一個(gè)class?顯然沒(méi)有那么簡(jiǎn)單。至少也要抽象一下呀。
抽象。比如一些文章里說(shuō),可以根據(jù)貓貓、狗狗抽象出來(lái)一個(gè)Animal出來(lái),然后定義Cat,繼承Animal,在定義Dog,也是繼承Animal。抽象就是本質(zhì)了嗎?那么為什么要抽象,而不直接定義Cat、Dog呢?這么“折騰”一下的目的是什么呢?或者說(shuō)有什么好處?
復(fù)用。Cat可以復(fù)用Animal里的屬性、方法等,Dog也可以復(fù)用Animal里的屬性方法。這樣看來(lái)復(fù)用好像就是本質(zhì)了。
哎,說(shuō)道復(fù)用我就比較郁悶。我是從面向過(guò)程學(xué)過(guò)來(lái)的,經(jīng)過(guò)漫長(zhǎng)艱苦的學(xué)習(xí),現(xiàn)在還沒(méi)有完全轉(zhuǎn)到面向?qū)ο?。好像跑題了。
面向過(guò)程里就解決了復(fù)用的問(wèn)題,定義一個(gè)過(guò)程(過(guò)程、函數(shù))就可以達(dá)到復(fù)用的目的。別人有的,你也有,那不算什么優(yōu)勢(shì)。別人沒(méi)有的你有,那就是優(yōu)勢(shì)了。既然面向過(guò)程已經(jīng)可以服用了,那么在面向?qū)ο罄锩嬉舱剰?fù)用,那還有什么優(yōu)勢(shì)呢?
面向過(guò)程可以達(dá)到復(fù)用的目的,但是有一個(gè)致命的缺點(diǎn):混亂。定義出來(lái)的函數(shù)沒(méi)有層次,沒(méi)有管理。假設(shè)一個(gè)項(xiàng)目里有一萬(wàn)個(gè)函數(shù),那么這些個(gè)函數(shù)就會(huì)雜亂無(wú)章的出現(xiàn)。要管理的話也只能按照頁(yè)面、窗體等來(lái)劃分。總之呢,想要管理好面向過(guò)程里的眾多函數(shù)是一件頭痛的事情。
我覺(jué)得面向?qū)ο笫怯忻嫦蜻^(guò)程“進(jìn)化”過(guò)來(lái)的,但是有人說(shuō)面向?qū)ο笫侵苯印氨摹背鰜?lái)的,不管他是怎么出來(lái)的了,總之他是很好的解決了“管理復(fù)用”的問(wèn)題。
封裝(Class):把相關(guān)的屬性、方法、事件放在一起,化零為整,統(tǒng)一管理。該隱藏的隱藏,該暴露的暴露。這是管理的第一步。
====================
繼承:都封裝起來(lái)了,那么就失去了靈活性。如何保證靈活性呢?繼承(還有函數(shù)重載等)。也就是多態(tài)了。相同的放在父類,不同的放在子類。這是我的理解,當(dāng)然你可以說(shuō)這種理解是錯(cuò)誤的。Class就好比一個(gè)大的家族,父類是根基,子類各有各的特點(diǎn)。正所謂:龍生九子各有不同。
子類可以復(fù)用父類里的屬性、方法、事件,這就是一種復(fù)用的管理方法。
組合(合成):父類、子類、抽象基類,這些都是一個(gè)家族里的關(guān)系,那么兩個(gè)家族有如何呢?組合。Has A,一個(gè)類里包含另一個(gè)類,通過(guò)這種方式來(lái)實(shí)現(xiàn)復(fù)用。這又是復(fù)用的一種管理方法。
接口:抽象基類是一個(gè)很好用的東東,比如DbCommand,用過(guò)的兄弟們都會(huì)體會(huì)到他的方便吧。但是他只能管同一個(gè)家族里的,另一個(gè)家族的就不行了。如果哪個(gè)數(shù)據(jù)庫(kù)(比如PostgreSQL)沒(méi)有繼承DbCommand怎么辦呢?接口就可以跨越不同的家族。當(dāng)然接口也有一個(gè)致命的弱點(diǎn),本身不能有任何的實(shí)現(xiàn)部分,他只能定義。
面向?qū)ο蟮母鞣N特點(diǎn)都是為了“管理復(fù)用”,所以我覺(jué)得面向?qū)ο蟮谋举|(zhì)就是“管理復(fù)用”。至于對(duì)象只是一種“表象”。
在多說(shuō)幾句,我是不喜歡被所謂的“對(duì)象”所束縛的。以前問(wèn)過(guò),SQLHelp為什么要寫(xiě)成靜態(tài)函數(shù)的形式,答曰:數(shù)據(jù)訪問(wèn)是一個(gè)對(duì)象嗎?怎么實(shí)例化呢?
我覺(jué)得數(shù)據(jù)庫(kù)就是一個(gè)對(duì)象,數(shù)據(jù)訪問(wèn)也是一個(gè)對(duì)象。數(shù)據(jù)訪問(wèn)就是數(shù)據(jù)庫(kù)的一個(gè)“代言人”。我的數(shù)據(jù)訪問(wèn)函數(shù)庫(kù)就是以DbCommand為中心人物,用起來(lái)非常的方便。
來(lái)自: 昵稱10504424 > 《C#》
0條評(píng)論
發(fā)表
請(qǐng)遵守用戶 評(píng)論公約
什么是面向?qū)ο笏枷?/a>
多態(tài)是說(shuō)父類或接口的引用指向了子類對(duì)象,這就提高了程序的擴(kuò)展性,也就是說(shuō)只要實(shí)現(xiàn)或繼承了同一個(gè)接口或類,那么就可以使用父類中相應(yīng)的方法,提高程序擴(kuò)展性,但是多態(tài)有一點(diǎn)不好之處在于:父類引...
面試官:什么是面向?qū)ο螅?/a>
什么是構(gòu)造方法重載?1)構(gòu)造方法。在程序員沒(méi)有給類提供構(gòu)造方法的情況下,Java 編譯器會(huì)為這個(gè)類創(chuàng)建一個(gè)默認(rèn)的無(wú)參構(gòu)造方法。2)構(gòu)造...
面向?qū)ο蟮能浖O(shè)計(jì)本質(zhì)[ERP信息監(jiān)理 ||解決方案|系統(tǒng)分析|需求分析|業(yè)務(wù)模型|軟件工...
關(guān)于面向?qū)ο螅好嫦驅(qū)ο缶褪且詫?duì)象為中心。既然以對(duì)象為中心,面向?qū)ο笏紤]的內(nèi)容自然是對(duì)象、對(duì)象間的協(xié)作、對(duì)象的分類、類之間的關(guān)系等等,由此引申了出幾個(gè)重要的概念。how: 多態(tài)在C語(yǔ)言中通常用...
Kermit’s Gossip
—->繼承:這個(gè)押運(yùn)員得是個(gè)人吧,應(yīng)該有人的一切屬性(如眼耳鼻舌,受想行識(shí)),好吧,我不用重新實(shí)現(xiàn)這些,游戲中一般都有People的角色,從那里繼承就好了,于是,Escort就成了People的子類,他可...
終于明白了虛函數(shù)、純虛函數(shù)和接口的實(shí)用方法和意義
終于明白了虛函數(shù)、純虛函數(shù)和接口的實(shí)用方法和意義 從理論上來(lái)說(shuō),這三個(gè)概念很容易背的滾瓜爛熟,但是從大學(xué)畢業(yè)到現(xiàn)在,我都沒(méi)真正搞明白這三個(gè)東西的出現(xiàn),究竟是為了做到什么事情。在寫(xiě)面向過(guò)程的...
【信管1.9】軟件工程(三)軟件設(shè)計(jì)與過(guò)程管理
【信管1.9】軟件工程(三)軟件設(shè)計(jì)與過(guò)程管理軟件工程(三)軟件設(shè)計(jì)與過(guò)程管理。概要設(shè)計(jì)又稱總體結(jié)構(gòu)設(shè)計(jì),主要是將系統(tǒng)的功能需求分...
面向?qū)ο笤O(shè)計(jì)7大原則
7大設(shè)計(jì)原則包括開(kāi)閉原則、里氏替換原則、依賴倒轉(zhuǎn)原則、單一職責(zé)原則、接口隔離原則、組合/聚合復(fù)用原則、迪米特法則。面向?qū)ο罂蓮?fù)用設(shè)計(jì)原則中最基礎(chǔ)的原則便是開(kāi)閉原則(Open-Closed Principle,OC...
對(duì)面向?qū)ο笤O(shè)計(jì)原則的總結(jié) - - CSDN技術(shù)中心
其他設(shè)計(jì)原則(里氏代換原則、依賴倒轉(zhuǎn)原則、合成/聚合復(fù)用原則、迪米特法則、接口隔離原則)是實(shí)現(xiàn)"開(kāi)-閉"原則的手段和工具。3.3耦合(或者依賴)關(guān)系的種類:零耦合(Nil Coupling)關(guān)系:...
框架
框架。框架(Framework)是整個(gè)或部分系統(tǒng)的可重用設(shè)計(jì),表現(xiàn)為一組抽象構(gòu)件及構(gòu)件實(shí)例間交互的方法;另一種定義認(rèn)為,框架是可被應(yīng)用開(kāi)發(fā)者定制的應(yīng)用骨架。這個(gè)定義是從框架內(nèi)涵的角度來(lái)定義框架的,...
微信掃碼,在手機(jī)上查看選中內(nèi)容