我所理解的設計模式 c 實現 一些設計原則

2021-09-12 02:26:06 字數 570 閱讀 5651

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

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

軟體設計真正要做的許多內容,就是發現職責並把那些職責相互分離。

概念:軟體實體(類、模組、函式等等)應該可以擴充套件,但是不可修改。

特徵:對於擴充套件是開放的,對於更改是封閉的。

設計人員必須對於他所設計的模組應該對哪種變化封閉做出選擇,他必須先猜出最有可能發生的變化種類,然後構造抽象來隔離那些變化。然而我們也要拒絕不成熟的抽象。

面對需求,對程式的改動是通過增加新的**進行的,而不是更改現有的**概念:高層模組不應該依賴低層模組。兩個都應該依賴抽象。

抽象不應該依賴細節。細節應該依賴抽象。

只要介面是穩定的,那麼任何乙個的更改都不用擔心其他受到影響,eg:cpu,記憶體,主機板誰壞了就換誰,不用都換。

子型別應該能夠替換掉它的父型別。

正是由於子型別的可替換性才使得使用父類型別的 模組在無需修改的情況下就可以擴充套件。

我對CPPUNIT的一些理解

一 測試用例 1 cppunit通常用於介面測試,如果進行路徑測試,需要考慮一些特殊問題,因為可能需要訪問被測類的保護或者私有成員。在這種情況下,可以考慮使用輔助類,輔助類從被測類派生,並將測試類宣告為友元。2 測試類從testfixture派生,該類宣告了setup teardown 函式,分別進...

我關於遞迴的一些理解

遞迴可以作為一種解決問題的思想,簡單來說就是自己呼叫自己,可以用少量的 解決一些複雜的問題,並且這個問題是乙個重複的過程,但是遞迴必須要有乙個遞迴停止的條件,如果遞迴不停止的話就會出現 爆棧 現象 這裡我們使用求乙個數的階層可以來理解遞迴 1!1 2!2 1 2 1 3!3 2 1 3 2 3 2 ...

一些設計模式的例項

1.單例模式 class msginit str var singlecase function instance.init text return instance m1和m2顯示的是在同乙個盒子裡 var m1 singlecase hello var m2 singlecase world c...