【C/C++】面相對象開發之封裝

封裝繼承多態是面向對象程序開發的基礎概念。是實現面向對象的基本要素。編程

封裝

程序開發,最核心價值,是數據。
程序實際上是讀取數據,操做數據,保存數據等一系列操做。
那麼通過良好組織過的數據,將使編程事半功倍。優化

高內聚,低耦合

說到數據,常常掛在嘴邊的,就是這句高內聚,低耦合了。
這並非絕對規則。高和低是程度副詞。咱們要儘可能高內聚,儘可能低耦合。
對於初學者,這一句話,可能就懵了。不一樣的人,有不一樣的評價標準。那麼什麼樣算是高,什麼樣算是低呢?code

1. 一個數據只讓一個對象進行管理。

避免公開的全局變量。若是一個數據開放程度過大。就難保不會有人想要偷懶,直接讀取/設置。
當管理這個數據的人過多,那麼想要對這個數據進行升級、優化,會大機率致使其餘模塊被迫修改。
不符合面向對象開發的價值觀。對象

2. 一樣的數據不在多處進行管理。

若是一個程序裏面,有多個地方保存了同一個數據,例如當前是否是白天「isDay1」,"isDay2"。
那麼當有開發新的功能時,有的人用了變量1,有的人用了變量2。很容易出現數據不一致的狀況。
必定要逼着再開發第三個程序段,用於保證isDay1和isDay2保持同步?那豈不是本身給本身添堵!
因此,一樣的數據,不要在多個地方進行管理。繼承

3. 能經過其餘數據計算出來的數據,不要重複保存。

在程序開發中,常常還會出現一種狀況。那就是能夠經過計算出來的數據,還要再拿一個變量進行保存。開發

class DayNightControl
{
    bool isDay;      // 當前是不是白天
    bool isNight;    // 當前是不是黑夜(這個數據就是重複)
}

當前是不是晚上,能夠經過!isDay得到,那麼就不要再重複記錄isNight。這是一個一眼就能看出問題的例子。
還有不少隱藏的狀況。同步

例如:某個控件是否顯示。顯示條件可能由A,B,C三個條件控制。本能夠經過A&&B&&C進行計算得出。此時額外增長一個visible變量,就會給後續的程序維護形成麻煩。class

相關文章
相關標籤/搜索