名可名,非常名 談介面和實現

2021-05-05 21:46:47 字數 859 閱讀 5047

名可名,非常名--談介面和實現

黃國強 2009-9-22

「名可名,非常名」出自《老子》第一章,解釋有多種,我找了乙個請見[1]。在這裡我借這段話來引出介面和實現的話題。

平時我非常喜歡舉的例子是桌子。比如,我們把桌子設計成乙個類。

問題很快出現了,我們應該給這個桌子增加什麼成員函式呢?加上有幾條腿的查詢函式?加上是什麼顏色的查詢函式?感覺正好應了「名可名,非常名」這句話。我們根本無法用類來表達我們生活中這樣乙個常見的概念。

這個問題產生的原因是什麼呢?

我認為,問題出在我們只從乙個角度看這個問題。這裡需要的是兩個角度即,乙個是使用者的角度(即,名可名),乙個是實現者的角度(即,非常名)。有兩個用 戶,乙個需要書桌(desk),乙個需要餐桌(table)。從這兩個使用者的角度可以獲得兩個介面類idesk和itable,從實現者的角度可以得到 具體類ctableimplement。ctableimplement 從二者繼承。**如下。

//負責表示書桌

class idesk

;//負責表示餐桌

class itable

;class ctableimplement

: public idesk

, public itable

;任何介面類的設計都是不能孤立進行的,一定要放在乙個具體環境中。桌子這個例子同樣如此。觀察乙個使用者如何使用者張桌子(比如用來當飯桌),從這個角度 我們很容易的給itable定義出成員函式。一張桌子到底被別人怎麼用,桌子本身是無法知道的。所以具體類 ctableimplement 的設計無需從使用者的角度來考察。僅僅需要按照設計者的常識設計桌子即可,無需關注使用者。設計完成後,再去實現從idesk和itable繼承的虛函式。這點與介面設計存在非常明顯的不同。

道可道,非常道 名可名,非常名

記得期初聽到這兩句話的意思的時候,只是覺得非常高大尚,完全不懂其中的意思。但是隨著年齡的增長,接觸知識的變多,對自己的認知的不斷更新和成長。我對這句話突然有了自己的理解。燃燈古佛未指引釋迦摩尼成佛之路,是知道,大道不可道,可道非大道。遮天當中的主人公石昊以身為道,開萬古之不能,從無道而有道,然亦斷道...

第1章 名可名非常名《豐富多彩的程式設計世界》

老子道德經有云 道可道,非常道。名可名,非常名。道 句中第 一 三兩個 道 是名詞,是指宇宙萬物的本原 本體 第二個 道 字是動詞,意思是 說出 常 指永恆的。名 句中第 一 三兩個 名 是名詞,它的意思是 名稱 概念 第二個 名 字是動詞,意思是 稱呼 命名 這兩句話的意思即 宇宙間萬事萬物的本原...

類名,抽象類名,介面類名

類名 類名作為形參和返回值型別時,呼叫方法傳遞的是該類的物件 貓類 public class cat 貓操作類 public class catoperator public cat geteat 貓的測試類 public class catdemo 抽象類名 抽象類名作為形參和返回值型別時,呼叫方...