設計模式(Design pattern)是一種思想,是一套被反復使用的代碼設計經驗總結,專門用于解決特定場景的需求。它提供了在軟件開發(fā)過程中面臨的一些問題的最佳解決方案,使用設計模式是為了提高代碼的可重用性、讓代碼通俗易懂,增加代碼可靠性。
開閉原則:對擴展開放,對修改關閉。就是如果要修改原有的功能或者是擴展功能,盡量去擴展原有的代碼,而不是修改原來已有的代碼。
里氏替換原則:任何子類對象都應該可以替換其派生的超類對象 。即,子類可以擴展父類的功能,但不要修改父類原有的功能。 也就是說,當一個子類繼承父類后,盡量不要去重寫它原有的方法。
依賴轉置(依賴倒置)原則:要面向接口編程,不要面向實現編程。兩個模塊交互時,都訪問各自接口,而不是具體的實現類。
單一職責原則:一個對象要專注于一種事情,不要讓它擔任太多責任。
接口隔離原則:一個接口盡量只包含用戶關心的內容。就是一個接口不要太龐大。
迪米特法則:如果兩個軟件實體之間不是特別必要,盡量不要讓他們直接通信。而是找個第三方進行轉發(fā),比如使用MQ(消息隊列)。
合成復用原則:如果在“組合/聚合”和“繼承”之間做抉擇時,優(yōu)先選擇“組合/聚合”。
創(chuàng)建型模式:用于創(chuàng)建對象的設計模式。一般可以簡化用戶創(chuàng)建對象的過程。其次可以降低耦合度,用戶不需要關心對象具體的創(chuàng)建過程。包含:單例模式、原型模型、工廠模式、建造者模式。
結構型模型:組織對象之間的結構。使其易于擴展等。包括:代理模式、適配器模式、橋接模式、裝飾器模式、外觀模式、享元模式、組合模式。
行為模型:主要用于決定對象如何做出行為包括:模板方法模式、策略模式、命令模式、責任鏈、狀態(tài)模式、觀察者模式、中介者模式、迭代器模式、訪問者模式、備忘錄模式、解釋器模式。
1)提高代碼復用率,降低開發(fā)成本和周期;
2)提高代碼可維護性、可拓展性;
3)使代碼更加優(yōu)雅、更容易被他人理解。
開閉原則要求你的代碼對擴展開放,對修改關閉。這個意思就是說,如果你想增加一個新的功 能,你可以很容易的在不改變已測試過的代碼的前提下增加新的代碼。有好幾個設計模式是基 于開閉原則的,如策略模式,如果你需要一個新的策略,只需要實現接口,增加配置,不需要 改變核心邏輯。一個正在工作的例子是 Collections.sort() 方法,這就是基于策略模式,遵循 開閉原則的,你不需為新的對象修改 sort() 方法,你需要做的僅僅是實現你自己的 Comparator 接口。
如果兩個對象彼此有關系,就說他們是彼此相關聯的。組合和聚合是面向對象中的兩種形式的 關聯。組合是一種比聚合更強力的關聯。組合中,一個對象是另一個的擁有者,而聚合則是指 一個對象使用另一個對象。如果對象 A 是由對象 B 組合的,則 A 不存在的話,B一定不存在, 但是如果 A 對象聚合了一個對象 B,則即使 A 不存在了,B 也可以單獨存在。