大話設計模式 第三章 單一職責原則

2021-06-19 15:43:22 字數 964 閱讀 2866

定義: 就乙個類而言 ,應該僅有乙個引起它變化的原因

我們在程式設計時,很自然地會給乙個類加各種各樣的功能,比如我們寫乙個窗體應用程式,會在其中加入某種商業運算的演算法,比如資料庫訪問等,維護麻煩,復用不可能,也缺乏靈活性

舉例:方塊遊戲的設計(3.5)

以俄羅斯方塊為例

下落、旋轉、碰撞判斷、移動、堆積等邏輯 應該與 介面分開

如果乙個類承擔的職責過多,就等於把這些職責耦合在一起, 乙個職責的變化會削弱或抑制這個類完成其他類的能力。 這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。

方塊的可以動的遊戲區域,可以設計為乙個二維陣列 寬10,高20   比如 int arraysquare=new int[10][20], 那麼整個方塊的移動就是陣列的下標變化

比如 原方塊在arraysquare[3][5]上,下移就是arraysquare[3][6] 如果下移的時候按了左鍵,那麼就是arraysquare[2][6].

每個陣列的值就是是否存在方塊的標誌,存在為1,不存在為0. 所謂的碰撞判斷就是: 比如能否左移,就是判斷arraysquare[x][y]中的x-1是否小於0或者arraysquare[x-1][y]是否等於1

所謂的堆積,就是判斷arraysquare[x][y+1]是否等於1,如果是,則把arraysquare[x][y]=1

消層,就是判斷arraysquare[x][y]將x從0迴圈到9,判斷arraysquare[x][y]是否都等於1,是則都清零,並將上方的陣列值遍歷下移一位

因此,所謂遊戲邏輯,就是數字的每一項值變化的過程。

介面表示邏輯,是根據陣列的資料進行繪製和擦出,或者根據鍵盤命令呼叫陣列的響應方法進行改變。

因此,此程式可分為兩個類,乙個是遊戲邏輯的類,乙個是窗體類。

如果你能夠想到多於乙個地動機去改變乙個類,那麼這個類有多於乙個的職責

大話設計模式(php版)第三章 單一職責原則

本篇是概念篇,無 小菜買了個新手機,向大鳥炫耀他的手機有諸多功能,比如聽歌,拍照,玩戲,聽 等,但是大鳥不以為然,認為手機只需要打 就夠了,沒必要花裡胡哨 小菜看到乙個ufo,用新手機拍了下來,然而放上電腦只看到乙個白點,苦笑道 沒用的東西 小菜的手機雖然整合了很多功能,卻不精通,拍照顯然不如相機,...

大話設計模式 第3章 單一職責原則

單一職責原則 single responsibility principle,srp 就乙個類而言,應該僅有乙個引起它變化的原因。如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到意想不...

《大話設計模式》 2 單一職責原則

一 單一職責原則 1.就乙個類而言,應該僅有乙個引起它變化的原因 2.如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,在變化發生時,設計會遭受到意想不到的破壞。3.軟體設計真正要做的許多內容,就是發現職責並把那...