面向對象六大基本原則

面向對象六大基本原則

1 人贊了文章

最近在學習java語言,也做了一些簡單的小項目,一些小遊戲啥的。但是,學習一個東西,得有相應的科學的理論作為支撐才能更好的進行下去嘛。面向對象六大基本原則就是java編程的科學指導。弄清楚這六大原則,代碼的結構設計一定會有一個大的進步。在這裡我淺談一下我對六大基本原則的理解。

1、單一職責原則

它的定義是:就一個類而言,應該僅有一個引起他變化的原因。 這句話怎麼理解呢,在設計程序的時候,一個類中的函數應該具有很強的相關性。比方說,你要設計一個五子棋,裡面的悔棋的方法和判斷輸贏的方法理論上直接整合起來放在監聽類裡面就行了。但是,如果把所有功能都放在監聽類里,先假設這個遊戲在以後要添加很多的各種各樣的玩法。那麼隨著時間的推移。監聽類就會越來越大,代碼會越來越複雜,這樣設計程序,靈活性低,擴展性差。

2、開閉原則

開閉原則是java世界裡最基礎的設計原則,它指導我們如何建立一個穩定,靈活的系統。定義如下:軟體中的對象,應該對於擴展是開放的,但是,對於修改是封閉的。在軟體的生命周期內,因為變化、升級和維護等原因需要對軟體原有代碼進行修改時,可能會將錯誤引入原本已經經過測試的舊代碼中,破壞原有系統。因此,當軟體需要變化時,我們應該盡量通過擴展的方式來實現變化,而不是通過修改已有的代碼來實現。當然,在現實開發中,只通過繼承的方式來升級、維護原有系統只是一個理想化的願景,因此,在實際的開發過程中,修改原有代碼、擴展代碼往往是同時存在的。就是在設計程序時,要改變功能盡量別再原有的代碼上改變。試想一下,一個項目不斷的添加新功能,難道往後的程序員要不厭其煩的在越來越複雜的代碼上添加一個新的功能,寫新的代碼嗎?顯然是效率低下以及不安全的。實現開閉原則最主要的思想是盡量通過擴展的方式來進行程序的修改。什麼叫做擴展的方式呢。比方說我要做一個飛機大戰,裡面有敵方飛機,有子彈,有我方飛機,有掉落的物品。這些類都用很大的相似性,不同之處就在於飛行的方式以及功能還有造型的差異。那麼如果我們直接在實現程序的時候不厭其煩的把每個類寫出來,想想這個工作量。。得命名多少個飛行方式的方法啊。想想就頭皮發麻。這時候想一想面向對象的基本原則。就會發現,為什麼不定義一個飛行物介面呢。所有方法在用的時候重寫不就好了。這樣,整個程序就會簡潔很多,也便於之後新增加功能以及往後的程序員的修改。

3 里氏替換原則

先來看一下定義:所有引用基類的地方必須能透明的使用其子類的對象。 簡單說來,所有的引用基類的地方必須能夠透明地使用其子類的對象。通俗說,只要父類能夠出現的地方子類就可以出現。但是反過來就不可以了。有子類出現的地方,父類未必就能適應。

推薦閱讀:

C#中使用Lambda表達式簡化代碼
Python 004-02:字元串
周末也要編程,3道Python題,9種解法,你能想出幾種

TAG:編程語言 | 設計模式 |