|
多少次有人問我如何構建一個比較好的類階層次,如何使用面向對象進行設計,或者問為什么我看了那么多面向對象和設計模式的書一到使用的時候卻總是寫出面向過程的代碼。每當我碰到這些問題的時候我總是回答,其實我也不知道。真的,其實我也不知道。
雖然我總是張口閉口面向對象,總是看到一個問題后就談這個有點XXX模式的影子,但大部分時候碰到一個問題我還是一片空白,不知道如何去分析設計和實現出好的面向對象。所以,我只想談談我是如何實踐面向對象的,這對我自己有用但不一定對你有用。嗯,回到正題。
回顧編程方法的發展史,我想不外乎兩個字:抽象。
從最早的匯編語言中使用的子例程到結構化編程,然后到面向對象、面向組件以及面向服務。我覺得都是不斷地提升抽象的層次。所以編程方法沒有好壞,只有適合不適合。在匯編時代問題規模都很小,所以我們需要的抽象能力不需要太強。而現代的軟件項目,問題的規模非常龐大,需要考慮的事情非常多(雖然純粹的技術含量不一定有匯編時代的高),我們就必須使用抽象層次更高的方法來匹配我們的問題規模。
面向對象編程方法的出現也不外乎如此,所以我們在使用面向對象方法開發的時候一個目的就是要提升抽象層次(比如現在由有人提出面向對象已經不足以匹配并行軟計算的抽象層次,所以不再教授面向對象,轉而教授函數編程)。
而我覺得提升抽象層次的一個好方法就是用代碼與人交談,用代碼來表達你的思想,在代碼中形成一個個“概念”,或者說代碼就是用來傳遞知識的。我將概念二字加上引號并加粗是有特別強調的意思,這個在后文我會談談什么是這里所說的概念。我不想在表面文字上談論太多,我們來實踐吧。
注意,本文代碼僅僅為了說明一些問題或現象,并不考慮業務上的合理性,讀者可以自行分辨然后拿自己的業務代碼進行思考。
方法的參數
不知道你寫過或見過下面的代碼沒有:
bool IsValid(string userName, string password, string email, int status);
it知識庫:面向對象實踐之路:提升抽象層次,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。