人与OO
轉載請注明: http://normalsoft.spaces.live.com/blog/cns!AF8C29F59CAD938E!353.entry
能將OO與人并列去講,著實費了我很大的勁??墒墙涍^一段簡單的比較,發現兩者自己的相同之處確實很多!???
??? 我們先將這個比方說出來,假設針對我們OO中的每種對象,對應與社會上每一個人,他們千差萬別,但都同時滿足一個相同點:對象(人)。
??? 先來所說OO的三個特性:封裝、繼承、多態。
??? 封裝,顯然人很明顯地做到了這點,各種各樣能力的人,都講自己封裝在一個尸殼之下。
??? 繼承,呵呵,大家都能看到嘛!男人和女人結合的原因也在于此。不過相對于社會,大家可能忽略另外一種繼承:學徒!老師教學生,學生掌握知識,都相當于繼承嘛。
??? 多態,嗯,這個比較難以解釋。多態是相對于調用者來說的,也就是說,調用者將所有被調用者等同對待(基類),但實際操作,具體的對象會有自己的實現。呵呵,說起來,我自己都覺得好笑,好像資本家(人)就是喜歡干這種事。他們聚集一幫人,讓他們干同一類型的活(分工)。雖然干同樣的活,但是這群人中,有人技術能力強,有人天生會偷懶。用社會學講,多態就是剝削!
???
??? 好了,戲說了三大特性。咱們再看看OO的幾大原則:SRP、OCP、LSP、DIP、ISP。講這些原則,其實就是講到有關設計了。對于設計,我們應該有一個認識,原則只是讓我們來判斷什么時候好的,什么是不好的。不代表其是否存在!
??? SRP,單一職責原則。這個很好解釋,對于你來講,或者說對于大部分人來講,你會認為單純的人你更愿意接近呢,還是喜歡接近復雜甚至陰暗的人呢?答案不言而喻了吧。所以我們設計正如我們選朋友一樣,要盡量簡單,坦誠相見。
??? OCP,開閉原則。修改一個人的基因是如何地難?改變一個人的習性是如何艱難,要不怎么會有“江山易改,本性難移”的俗語?所以說,改變別人不是一個好的辦法。對于改變短處,確實很難,但是,我們擴展別人的長處,卻往往事半功倍!這個時候開放的心態也是人在面對變化的時候的制勝法寶。
??? LSP,替換原則。這顯然是個用人問題。那些大老板們都喜歡任何工作角色都可以被替換,替換的人可以直接頂替原有的人。呵呵。工業化、規?;陌l展,難道必然要求這樣?
??? DIP,依賴倒置原則。這個又是一個組織的藝術。對于一個組織群體,他的整個架構最好是不要依賴于具體的人,而是具有統一性質的人,這就是人的角色概念。依賴于這些角色,可以組織成各種工作流程,最終形成整個組織的構成。
??? ISP,接口隔離原則。簡單點說就是用人,用的是他的能力。每個人都有他的多面性。而我們在相處的時候,只是關心其一面或幾面。父母關心的是其作為子女的一面,妻子關心的是作為丈夫的一面,兒女關心的是作為父親的一面,老板關心的是作為能力的一面。我們關心都是其對應的角色。 上面的對比雖然比較牽強,不過還是可以幫助我們理解OO的一些基本知識的。
下面,我們再嘗試從人的自然性和社會性來分析OO。當然了,我對社會學不是很了解。所以知道什么說什么了。 人是有生有滅的。不知道大家有沒有考慮過這樣的問題,為什么OO中的對象會有構造和析構的過程?是的,人如果都不死,那么地球就死了。就如有一個家伙證明西方僵尸鬼是不可能存在的,就是假設人變成僵尸后不死,那么只要經過兩年,地球上所有人都變成僵尸了。而這些僵尸也會因為不能喝到活的人血而全部死亡。呵呵,所以僵尸的不存在恰恰證明了人的死亡的必然性和合理性。
??? 據說有一個理論,人和人之間要能夠認識,只需要3經過三個人。翻翻我們的代碼,如果一個類要引用另一個類的話,連接的長度如果太長,你就會發現其設計有問題,一定想找一個捷徑直接去訪問。于是又會傾向于簡短訪問的方向平衡。
??? 其實OO就是人創造的,而所有對象,都是從人的角度去理解的。往往很多都帶有人本身的特性在上面,所以必然又很多痕跡可以追尋。本文只是一個嘗試,目的也只是更好的理解OO。理解我們的設計。
?
轉載于:https://www.cnblogs.com/ohmyjava/archive/2006/10/30/2141988.html
總結
- 上一篇: SQL语句对象化,先看示例代码.
- 下一篇: ScriptManager控件声明的各个