我的觀點 類的設計思路

2022-08-10 03:51:11 字數 2299 閱讀 1834

公共部分

過渡部分

私有部分

如果沒有辦法劃分出明確的區域, 則可以使用過渡區來

放置這些東西, 如果說將來發現

放錯了地方,可以從過渡區里把它拿走

私有部分應該是各個類自己特殊的

怎麼判斷要構造哪些類,他們應該放在**

首先需要明白寫這個類是為了做什麼

為了實現功能

這個功能是業務功能還是基礎設施功能?

為什麼要考慮這個, 因為它決定了你要實現在哪乙個層級

那如果是模糊的區域,可以任意選乙個區,或者專門整乙個

區,我目前認為沒有明確的過渡區,

因為即便是過渡區,它仍然和其它區域可能有模糊地帶,

所以只能暫時讓模糊地帶歸屬於某乙個地方先

不用糾結這類細節

基於此,

我需要乙個類存放公共的東西

需要乙個類存放特定的部分

模糊的地方, 可以先放到子類中處理,

因為模糊的地方將來變化的可能性比較大,放到公共區里的話,影響範圍比較大

注意影響範圍大,並不代表什麼, 只有發生變化時,影響範圍才是我們要考慮的事情

我這裡主要是出於控制影響範圍,防範改動的問題

例如:公共頭部a

私有部分b

假設引入了新變數c,如果把c放入a中時,

假設c 需要經常更新,那麼就要頻繁更新頭部a, 如果說a對更新是友好的,那我覺得c放在a裡,沒什麼問題

什麼是更新友好的?

比如 c 的型別,你把它改了,本來是int,你要改成string

那這顯然是更新不友好的,要被禁止

所以你就選擇新增乙個字段,用新的,這時,其它人都必須加**或者更新**來

支援你的這次改動, 如果是這樣的,顯然也是更新不友好的

所以,當時如果能把c 丟出來,a就不會有問題,但這樣做,就會導致很多類需要引入c

那這樣,我們就有折中的辦法,就是再建立乙個基類,給它定義乙個新的範圍,

通過這種方式, 我們把影響範圍縮小到一定程度,這樣就沒有那麼多缺點了.

這是乙個折中的方案,需要類的設計經驗。

物件的預設實現

兩層設計,簡單,功能劃分粗放

多層設計,複雜,但是功能劃分的粒度更細

抽象類 -> 它就是提供抽象邏輯,比如程式處理的模板實現

基礎類 -> 它應該是要提供基本功能,就像水電基礎設施他要提供好

業務類 -> 基於這些基礎設施,進行

抽象 <—> 實現

隔離變化的方法 —> 中間加一層(可以是邏輯上的一層,也可以是物理上的一層)

加了一層之後,我們就是要做到變化可控

抽象就只做抽象的事情 - 不要貪多

基礎類就只做基礎類的事情 - 不要貪多

業務類就只做業務類的事情 - 不要貪多

寫**需要有 准入機制

什麼東西可以加,什麼不能加

什麼是鼓勵的,什麼是不鼓勵的,需要有這個標準

就像google招聘的准入標準

一定要對各模組的職責有明確的定義

哪個部分做哪塊

要把**當成乙個產品,是你的產品,你肯定想喲的是美的產品

什麼是美的產品 - 簡潔,清晰, 業務它並不簡單,但是我希望每個部分可以做到

簡單,只是一群簡單的東西,聚集在一起,就成為了不簡單的系統或服務

為什麼需要設計?

目錄結構

日誌格式

模組劃分

模組名稱

函式名稱

變數名稱

不管你怎麼分,禁止隨意劃分,每種分需要有一套理論支撐,只要合理即可,沒有標準

正規化,不是所有東西都可以精確的,我們這是藝術品, 藝術無法精確, 不要模板

ok簡單的兩層設計

1) 因為我不需要引入第三層去分割許可權, 也不需要引入第三層去隔離變化

為什麼不需要分割許可權,因為沒那麼多許可權

為什麼不需要隔離變化,因為沒那麼多變化 - 這可能是短視了,但我目前只能看到這些

並且我不想陷入過渡設計,將來新增一層的工作量,我相信是可控的,所以按需設計

我們只需要預留1年或者幾個月的容量即可

封裝變化 - 這個非常重要,這個就是加了一層,或者包裝了一層,

然後讓變化可控,實際上就是解耦合了

另外就是,因為功能專一,所以就需要有人專門負責摸個模組,

每個模組還需要有備份

多個模組上面再來乙個人

這就是組織架構的能力, 系統架構和組織架構類似,但需要你對整體和細節都要很了解才可以

global - base

modules

- module base1

- module base2

- module base3

基礎題 類 類的設計思路

include include using namespace std class student int main student student int 變數a void student set 變數a int 變數a int student get 變數a 成員變數無參建構函式 有參建構函式 ...

我開發的基本觀點

1.作為架構,抽像是重要的,但是技術實現更重要,必竟有些效能問題不是光加機器可以解決的.比如松耦合,用佇列最好,但佇列需要資料庫監聽,分布式大量的資料傳輸,大量的序列化和反序列化都是效能瓶頸,非同步需要大量的日誌讀寫,多執行緒自身的損耗,負載勻衡自身的損耗,以訊息機制還會導致資料庫讀寫成倍的增長,而...

Excel外掛程式類庫的設計思路

一 外掛程式功能 提供多種讀取excel的方式,如npoi com aspose,呼叫介面一致,包括excel檔案路徑,sheet名稱 讀取是否包含列頭 即excel第一行是否為列頭行 二 實現思路 2.1 定義乙個介面,該介面提供乙個讀取excel的公共方法 public inte ce iexc...