設計模式之物件導向再回首

2021-07-10 11:07:05 字數 2598 閱讀 4344

如果你不能很好的理解物件這個思想,你可以把物件看做是現實生活中的乙個個的個體。這裡就不在詳細介紹物件的概念等知識了,直接說一些我個人對物件一部分知識的理解。

為方便闡述,下面以乙個小小計算器的demo做例子展開我對封裝和耦合的理解。

namespace 計算器**v1._0}}

從上面的**中,我們不難看出:**很好的體現了「窮舉」的思想;只要是乙個功能,哪怕是乙個最小的不可再分的功能,都有著自己的「完整的」一套**;邏輯上的關係也不複雜。很適合這樣的小的程式,但是一旦**量超過一定程度,通過這種方法開發出來的程式對任何乙個維護人員來說不亞於一場災難。

封裝的出發點就是將業務邏輯和介面邏輯分離開來,就好像我們的硬體和軟體一樣對**進行乙個初級的「模組化」。

namespace 簡單工廠

",strresult );

console.readline();

}catch (exception ex) //調錯語句

",ex.message );}}

}#region operation運算類

public class operation //運算類

return result; //返回值}}

#endregion

}

不難看出,上面這版**將原始程式分割成了兩部分:客戶端和運算類。客戶端即是我們前面提到的介面邏輯的顯示,運算類即是我們前面提到的業務邏輯的顯示。通過分割,客戶端和運算類不再是藕斷絲連的千絲萬縷,而是值通過過乙個函式的呼叫實現運算功能的實現。

在介紹解耦為何物之前,我們需要知道耦合可以看成乙個描述模組之間關係親密程度的指標吧:如果模組之間比較親密,那麼模組之間具有強耦合關係;如果模組之間一般,那麼稱模組之間具有弱耦合關係。而考量耦合強弱,可以從模組間介面的複雜性、模組之間呼叫的方式和模組之間傳送資料的量進行衡量。雖然我們的老祖宗不懂得程式不懂得編寫**,但是智慧型的老祖宗早在幾千年前就告誡我們一條普適性的哲理「牽一髮而動全身」。模組之間如果具有強耦合關係,那麼修改其中乙個必然會影響到另乙個。這就給系統的維護帶來了巨大的挑戰。所以,我們在編寫**時力求對模組進行解耦處理。下面請看計算器的第三版**。

namespace 緊耦合和松耦合

}public class operation //運算總部,運算類

set

}public double numberb //數字b的屬性

set

}/// /// 宣告乙個類顯示返回值

///

///

public virtual double getresult()

}public class operationadd : operation //加法類,繼承運算類

}public class operationsub : operation //減法類,繼承運算類

}public class operationmul:operation //乘法類,繼承運算類

}public class operationdiv : operation //除法類,繼承運算類

result = numbera / numberb;

return result;}}

/// 簡單工廠模式的總結

/// 簡單工廠模式

/// 1、例項化物件

/// 2、選擇例項化的物件

/// 3、有無在將來增加物件的可能

/// 4、通過簡單工廠實現創造例項的過程

///

public class operationfactory //簡單工廠模式之簡單運算工廠

return oper; //返回值為result }}

}

上面這段**主要是對業務邏輯進行了解耦處理:資訊的輸入和後台計算邏輯的解耦、計算邏輯中的加減乘除四則運算之間的解耦。經過解耦後,我們優化一部分**時就不對對另外的**造成特別大的影響。當然,封住也給維護帶來了好處,只不過沒有解耦帶來的好處的影響大。

現在有這樣乙個不成熟的想法:在我看來,封裝就是解耦的乙個初始化吧。ps:一段**經過封住也好解耦也好,產生的結果的數量是不定的;這需要我們自己結合系統的大小做出決定。下面給出一張我對封裝和解耦的理解的圖。

物件導向的概念對於我們來說並不算陌生了。但是讓我完全理解物件導向的是《大話設計模式》這本書。物件導向最醒目的地方就是牽一髮而不動全身。能夠體現出物件導向的**和不能體現出物件導向思想的**就好比活字印刷術和印刷術的之間的關係。我們知道活字印刷術的印版上的每乙個字都是可以替換的而印刷術的印版就不具備活字印刷術的這種特性了。所以當出現錯字、客人要求換字的情況時,活字印刷術只需要替換需要替換的字即可;而印刷術則需要替換全部的印版。兩者的這一特性無疑會讓大眾選擇活字印刷術而非印刷術。活字印刷術的特性放到物件導向中就是可維護、可復用、可擴充套件和靈活性好這四點特性了。設計模式第一遍給我最大的震撼不是接觸到模式之後的欣喜,而是一名程式設計師工作之後堅持學習的精神。

—joker

再回首 行為型設計模式

行為型 設計模式被分成三大類,建立型,結構型,行為型。具體要闡述為什麼這麼分,這個問題,暫時解決不了,但是我們能做的是,合理的運用它。對於行為型設計模式,區別於其他兩種的就是 它側重的是對 方法 的操作。下面是對幾個行為型的設計模式的理解。一 模板方法 1 概述 將乙個操作的演算法的骨架和具體演算法...

設計模式之物件導向

1物件 是乙個自包含的實體,用一組可識別的特性和行為來標識 2類 具有相同屬性和功能的物件的抽象的集合 3類的例項化 例項,就是乙個真實的物件。例項化就是建立物件的過程,用 new關鍵字來建立 4構造方法 又叫建構函式,其實就是對類進行初始化。構造方法與類同名,無返回值,也不需要 void,在new...

設計模式之物件導向

介面邏輯與業務邏輯分離。使用繼承與多型提高擴充套件性和復用性。對於專案剛開始的時候,可以不進行抽象,但是如果需求改變的時候,需要建立抽象來隔離以後可能發生的同類變化,也就是說對於程式的改動,是通過增加新 而不是修改舊 來完成。對於乙個類來說,應該只有乙個引起它變化的原因。職責過多會導致高度耦合。對於...