設(shè)計原則
學(xué)習了好幾遍的設(shè)計模式,為了防止自己遺忘,做一下筆記,總結(jié)一下,自己學(xué)習過的設(shè)計模式,如果有什么錯誤,敬請諒解。
單一職責原則
描述:A class or module should have a single responsibility
中文:一個類或者模塊只負責完成一個職責(或者功能)。
注意,這個原則描述的對象包含兩個,一個是類(class),一個是模塊(module)。關(guān)于這兩個概念,在專欄中,有兩種理解方式。一種理解是:把模塊看作比類更加抽象的概念,類也可以看作模塊。另一種理解是:把模塊看作比類更加粗粒度的代碼塊,模塊中包含多個類,多個類組成一個模塊。
開閉原則
描述:software entities (modules, classes, functions, etc.) should be open for extension , but closed for modification.
中文:軟件實體(模塊、類、方法等)應(yīng)該“對擴展開放、對修改關(guān)閉”。
這個描述比較簡略,如果我們詳細表述一下,那就是,添加一個新的功能應(yīng)該是,在已有代碼基礎(chǔ)上擴展代碼(新增模塊、類、方法等),而非修改已有代碼(修改模塊、類、方法等)。
里氏替換原則
描述:Functions that use pointers of references to base classes must be able to use objects of derived classes without knowing it.
中文:子類對象(object of subtype/derived class)能夠替換程序(program)中父類對象(object of base/parent class)出現(xiàn)的任何地方,并且保證原來程序的邏輯行為(behavior)不變及正確性不被破壞。
接口隔離原則
描述:Clients should not be forced to depend upon interfaces that they do not use。
中文:客戶端不應(yīng)該被強迫依賴它不需要的接口。其中的“客戶端”,可以理解為接口的調(diào)用者或者使用者.
依賴反轉(zhuǎn)原則
描述:High-level modules shouldn’t depend on low-level modules. Both modules should depend on abstractions. In addition, abstractions shouldn’t depend on details. Details depend on abstractions.
中文:高層模塊(high-level modules)不要依賴低層模塊(low-level)。高層模塊和低層模塊應(yīng)該通過抽象(abstractions)來互相依賴。除此之外,抽象(abstractions)不要依賴具體實現(xiàn)細節(jié)(details),具體實現(xiàn)細節(jié)(details)依賴抽象(abstractions)
KISS 原則
描述:Keep It Simple and Stupid.
中文:盡量保持簡單。
YAGNI 原則
描述:You Ain’t Gonna Need It
中文:你不會需要它
這條原則的核心思想就是:不要做過度設(shè)計.
DRY 原則
描述:Don’t Repeat Yourself。
中文:不要重復(fù)自己,理解為:不要寫重復(fù)的代碼.
迪米特法則
描述:Each unit should have only limited knowledge about other units: only units “closely” related to the current unit. Or: Each unit should only talk to its friends; Don’t talk to strangers.
中文:每個模塊(unit)只應(yīng)該了解那些與它關(guān)系密切的模塊(units: only units “closely” related to the current unit)的有限知識(knowledge)。或者說,每個模塊只和自己的朋友“說話”(talk),不和陌生人“說話”(talk)。
先把所有的法則寫在這里,接下來我總結(jié)各種模式的時候,在總結(jié)一下各種模式滿足了什么原則!
推薦一個零聲學(xué)院免費教程,個人覺得老師講得不錯,
分享給大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,
TCP/IP,協(xié)程,DPDK等技術(shù)內(nèi)容,點擊立即學(xué)習:
服務(wù)器
音視頻
dpdk
Linux內(nèi)核

浙公網(wǎng)安備 33010602011771號