1. 程式人生 > 程式設計 >設計模式的七大原則(Java)

設計模式的七大原則(Java)

一、OOP三大基本特性

OOP

面向物件程式設計(Object Oriented Programming)作為一種新方法,其本質是以建立模型體現出來的抽象思維過程和麵向物件的方法。模型是用來反映現實世界中事物特徵的。任何一個模型都不可能反映客觀事物的一切具體特徵,只能對事物特徵和變化規律的一種抽象,且在它所涉及的範圍內更普遍、更集中、更深刻地描述客體的特徵。通過建立模型而達到的抽象是人們對客體認識的深化。

封裝

封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的屬性和方法只讓可信的類操作,對不可信的進行資訊隱藏。

繼承

繼承是指這樣一種能力,它可以使用現有的類的所有功能,並在無需重新編寫原來類的情況下對這些功能進行擴充套件。

多型

多型指一個類例項的相同方法在不同情形有不同的表現形式。具體來說就是不同實現類對公共介面有不同的實現方式,但這些操作可以通過相同的方式(公共介面)予以呼叫。

二、OOD七大原則

面向物件設計(OOD)有七大原則,它們互相補充

開-閉原則

Open-Close Principle(OCP),即開-閉原則。開,指的是對擴充套件開放,即要支援方便地擴充套件;閉,指的是對修改關閉,即要嚴格限制對已有內容的修改。開-閉原則是最抽象也是最重要的OOD原則。簡單工廠模式、工廠方法模式、抽象工廠模式中都提到了如何通過良好的設計遵循開-閉原則。

里氏替換原則

Liskov Substitution Principle(LSP),即里氏替換原則。該原則規定“子類必須能夠替換其父類,否則不應當設計為其子類”。換句話說,父類出現的地方,都應該能由其子類代替。所以,子類只能去擴充套件基類,而不是隱藏或者覆蓋基類。

依賴倒置原則

Dependence Inversion Principle(DIP),依賴倒置原則。它講的是“設計和實現要依賴於抽象而非具體”。一方面抽象化更符合人的思維習慣;另一方面,根據里氏替換原則,可以很容易將原來的抽象替換為擴充套件後的具體,這樣可以很好的支援開-閉原則。

介面隔離原則

Interface Segration Principle(ISP),介面隔離原則,“將大的介面打散成多個小的獨立的介面”。由於Java類支援實現多個介面,可以很容易的讓類具有多種介面的特徵,同時每個類可以選擇性地只實現目標介面。

單一職責原則

Single Responsibility Principle(SRP),單一職責原則。它講的是,不要存在多於一個導致類變更的原因,是高內聚低耦合的一個體現。

迪米特法則/最少知道原則

Law of Demeter or Least Knowledge Principle(LoD or LKP),迪米特法則或最少知道原則。它講的是“一個物件就儘可能少的去了解其它物件”,從而實現鬆耦合。如果一個類的職責過多,由於多個職責耦合在了一起,任何一個職責的變更都可能引起其它職責的問題,嚴重影響了程式碼的可維護性和可重用性。

合成/聚合複用原則

Composite/Aggregate Reuse Principle(CARP / CRP),合成/聚合複用原則。如果新物件的某些功能在別的已經建立好的物件裡面已經實現,那麼應當儘量使用別的物件提供的功能,使之成為新物件的一部分,而不要再重新建立。新物件可通過向這些物件的委派達到複用已有功能的效果。簡而言之,要儘量使用合成/聚合,而非使用繼承。