???老子中有云“道生一,一生二,二生三,三生萬物”。
???
???道的生長歷程到三嘎然而止,因為沒有說三生四,而說三生萬物。從上應該可以說事物到“三”已經表示了一個復雜的階段。
???如果把上面的“道”是指c++類設計和編程的話,那是什么樣子呢?
???我們用c++編程不是表示說我們必須要用類來實現需求,這里只是假設我們通過類來實現。
???下面我用老子的智慧套用在c++類設計和編程上:
???“道生一”階段,我們通過設計一個類來實現需求。對于簡單的需求來說一個類可能已經足夠,它包含私有的數據結構和暴露給外部的接口。應該說,這種設計非常簡單實用,它屬于一個封閉的世界中,過著自給自足的生活。為了應對外部變化的世界,它對自己的國民(屬性)和對外貿易(接口)進行調整。總之,它是屬于閉關鎖國的階段,就像18世紀前的中國一樣。
???“一生二”階段,就像伊甸園中從亞當到亞當和夏娃一樣。對于我們來說可能會問,伊甸園中為什么會多出一個夏娃來呢?她來自哪里,為什么要來,來干嗎?就像這個世界為什么有男人和女人,為什么有白天和黑夜,為什么有夏天和冬天,為什么有陰有陽,...?為什么不讓“一”一直發展下去呢,我們為什么那么狠心要把“一”分裂呢?
???在開始我們設計了一個類A,隨著人類貪婪需求的增長和對懶惰功能的擴充,我們又設計了類B。我們讓B做一些事情,然后又通過類A來調用它。
???“一”的世界??????????????????????????"二"的世界
?????????????
?????????A????????????????????????????????????A????<——>???B
???我們為什么要多創造一個B,就像上帝為什么多創造一個夏娃出來,這是為什么?難道上帝覺得亞當無聊所以創造夏娃來陪他嗎?在程序的世界中,我們可以把自己暫時比作上帝,我們無所不能,我們可以隨心所欲的創造世界(對象等),我們可以讓它生,可以讓它死。在這里我們可以把類A看成亞當,我們為什么還要創造B呢?
???工具的限制。我們可以把所有B的結構和功能并入A中,感覺這也是非常好的一件事情。前幾天看了一本電子書《大道至簡》,其中說到Delphi的原始時代,因為編譯器的限制導致一個程序的大小若超過64K的話,它就沒法編譯了。這就意味著若當時你的程序是65K的話,那就編譯不了。你說我可以通過優化算法等渠道把程序字節數縮小使它的大小小于64K,那不就OK了嗎。那若是不管你用什么辦法程序的大小已經沒有辦法縮小了,它必須超過64K,這時怎么辦,編譯不了,意味著寫的程序沒辦法執行,即使程序中有美妙的算法那又怎么樣,不能允許還不是“廢銅爛鐵”。那時的辦法只能“分裂”它,把它一分為二再說,至于后面的編譯和鏈接是以后的事了。這里由于工具的限制導致必須一分為二。