面向對象程序設計(Object Oriented Programming)做爲一種新方法,其本質是以創建模型體現出來的抽象思惟過程和麪向對象的方法。模型是用來反映現實世界中事物特徵的。任何一個模型都不可能反映客觀事物的一切具體特徵,只能對事物特徵和變化規律的一種抽象,且在它所涉及的範圍內更廣泛、更集中、更深入地描述客體的特徵。經過創建模型而達到的抽象是人們對客體認識的深化。設計
封裝,也就是把客觀事物封裝成抽象的類,而且類能夠把本身的屬性和方法只讓可信的類操做,對不可信的進行信息隱藏。對象
繼承是指這樣一種能力,它可使用現有的類的全部功能,並在無需從新編寫原來類的狀況下對這些功能進行擴展。繼承
多態指一個類實例的相同方法在不一樣情形有不一樣的表現形式。具體來講就是不一樣實現類對公共接口有不一樣的實現方式,但這些操做能夠經過相同的方式(公共接口)予以調用。接口
面向對象設計(OOD)有七大原則,它們互相補充ip
Open-Close Principle(OCP),即開-閉原則。開,指的是對擴展開放,即要支持方便地擴展;閉,指的是對修改關閉,即要嚴格限制對已有內容的修改。開-閉原則是最抽象也是最重要的OOD原則。簡單工廠模式、工廠方法模式、抽象工廠模式中都提到了如何經過良好的設計遵循開-閉原則。ci
Liskov Substitution Principle(LSP),即里氏替換原則。該原則規定「子類必須可以替換其父類,不然不該當設計爲其子類」。換句話說,父類出現的地方,都應該能由其子類代替。因此,子類只能去擴展基類,而不是隱藏或者覆蓋基類。it
Dependence Inversion Principle(DIP),依賴倒置原則。它講的是「設計和實現要依賴於抽象而非具體」。一方面抽象化更符合人的思惟習慣;另外一方面,根據里氏替換原則,能夠很容易將原來的抽象替換爲擴展後的具體,這樣能夠很好的支持開-閉原則。io
Interface Segration Principle(ISP),接口隔離原則,「將大的接口打散成多個小的獨立的接口」。因爲Java類支持實現多個接口,能夠很容易的讓類具備多種接口的特徵,同時每一個類能夠選擇性地只實現目標接口。ast
Single Responsibility Principle(SRP),單一職責原則。它講的是,不要存在多於一個致使類變動的緣由,是高內聚低耦合的一個體現。程序設計
Law of Demeter or Least Knowledge Principle(LoD or LKP),迪米特法則或最少知道原則。它講的是「一個對象就儘量少的去了解其它對象」,從而實現鬆耦合。若是一個類的職責過多,因爲多個職責耦合在了一塊兒,任何一個職責的變動均可能引發其它職責的問題,嚴重影響了代碼的可維護性和可重用性。
Composite/Aggregate Reuse Principle(CARP / CRP),合成/聚合複用原則。若是新對象的某些功能在別的已經建立好的對象裏面已經實現,那麼應當儘可能使用別的對象提供的功能,使之成爲新對象的一部分,而不要再從新建立。新對象可經過向這些對象的委派達到複用已有功能的效果。簡而言之,要儘可能使用合成/聚合,而非使用繼承。