單一職責原則、開放-封閉原則和依賴倒轉原則

單一職責原則:編程

  就一個類而言,應該僅有一個引發他變化的緣由。spa

  目的是爲了儘量的解耦。接口

例子:產品

  若是是一個鳥類,應該只有鳥的變化是改變這個類的緣由,天氣和豬的變化不該該是改變這個類的緣由;擴展

  若是是一個鳥的腳類,應該只有鳥的腳的變化是改變這個類的緣由,鳥的嘴和豬的變化不該該是改變這個類的緣由;程序

 

開放-封閉原則:客戶端

  對擴展開放,對修改封閉。co

  目的是爲了程序能儘量無限擴展,而不是僅僅改變。background

  然而對程序中的每一個部分都刻意抽象是更糟糕的想法,請記住,拒毫不成熟的抽象和抽象自己同樣重要。工廠模式

例子:

  當初老子只生產蘋果:客戶端-蘋果類

  後來二筆產品要老子同時生產草莓,老子當即抽象這個變化:客戶端-水果類  蘋果子類 草莓子類,並機制的使用工廠模式封裝子類產品。

 

依賴倒轉原則:

  模塊之間不該該互相依賴,它們都應該依賴抽象;抽象不該該依賴細節,細節應該依賴抽象。

  即針對接口編程,具體一點就是接口類或抽象類。程序中的依賴關係都應該終止於抽象類或者接口。

里氏代換原則:

  子類必須能替換掉它們的父類。程序中用子類代替父類,程序的行爲應該是沒有變化的。

  這要求子類具有父類的全部行爲和特徵。

例子:

  想一想策略模式,客戶端只依賴context接口和策略抽象類,具體策略實現和客戶端不要緊;具體策略類只依賴並實現策略抽象類,具體客戶端怎麼使用也和具體策略類不要緊。

相關文章
相關標籤/搜索