這個作業屬於哪個課程
班級傳送門
這個作業要求在**
作業要求傳送門
這個作業的目標
閱讀書籍,學習設計模式與設計原則思想
書籍的主要內容是講解物件導向的六大原則、23種設計模式、2種android開發架構模式,並結合android具體原始碼以及相關**demo講解。
**遵循設計原則可以使得我們的**有更強的拓展性、強壯性。
內容比較多,選擇常見的幾種設計模式來分析。
單例模式
單例模式可以認為是最簡單的一種設計模式,只需要保證全域性單例即可。可以通過雙重檢鎖或者靜態變數的方式來保證全域性物件唯一。下面使用雙重檢鎖來實現:
public class singleinstance
public static singleinstance getinstance()}}
return instance;}}
觀察者模式
觀察者模式可以很好地解決輪詢問題,改變主動權到資料手中。例如當前執行緒a需要在另乙個執行緒b結束後執行某個邏輯,那麼直接的做法就是當前執行緒不斷去詢問另乙個執行緒是否執行結束;而觀察者模式可以讓執行緒b結束後主動通知執行緒a執行邏輯。
觀察者的優點是:
觀察者模式結構如下:
責任鏈模式
責任鏈模式是一種行為設計模式, 允許你將請求沿著處理者鏈進行傳送。 收到請求後, 每個處理者均可對請求進行處理, 或將其傳遞給鏈上的下個處理者。
將這些處理者連成一條鏈。 鏈上的每個處理者都有乙個成員變數來儲存對於下一處理者的引用。 除了處理請求外, 處理者還負責沿著鏈傳遞請求。 請求會在鏈上移動, 直至所有處理者都有機會對其進行處理。
最重要的是: 處理者可以決定不再沿著鏈傳遞請求, 這可高效地取消所有後續處理步驟。
結構如下:
裝飾者模式
裝飾模式是一種結構型設計模式, 允許你通過將物件放入包含行為的特殊封裝物件中來為原物件繫結新的行為。
當你需要更改乙個物件的行為時, 第乙個跳入腦海的想法就是擴充套件它所屬的類。 但是, 你不能忽視繼承可能引發的幾個嚴重問題。
繼承是靜態的。 你無法在執行時更改已有物件的行為, 只能使用由不同子類建立的物件來替代當前的整個物件。
子類只能有乙個父類。 大部分程式語言不允許乙個類同時繼承多個類的行為。
其中一種方法是用聚合或組合 , 而不是繼承。 兩者的工作方式幾乎一模一樣: 乙個物件包含指向另乙個物件的引用, 並將部分工作委派給引用物件; 繼承中的物件則繼承了父類的行為, 它們自己能夠完成這些工作。
你可以使用這個新方法來輕鬆替換各種連線的 「小幫手」 物件, 從而能在執行時改變容器的行為。 乙個物件可以使用多個類的行為, 包含多個指向其他物件的引用, 並將各種工作委派給引用物件。
結構模式如下:
設計模式是軟體設計中常見問題的典型解決方案。 它們就像能根據需求進行調整的預製藍圖, 可用於解決**中反覆出現的設計問題。選擇合適的設計模式可以讓自己的開發事倍功半。
我自己是專攻於移動端開發,其中感受最深的是單例模式、觀察者模式。
單例模式可以作為全域性的處理中心,所有的介面可以獲取到該物件並得到服務,極大地簡化了邏輯。
而觀察者模式可以讓資料變化的時候自動反應到介面上,不需要手動把資料設定到介面,**解耦分離。
但設計模式必須根據具體的場景來結合使用,不然會適得其反。
設計原則其中乙個重大的方面就是面向抽象,而不是面向具體。這樣的好處是我們可以隨意修改具體的**而不需要去修改呼叫方,對於呼叫方是無感知的。極大提高**的可維護性。在實際的開發中,我也會抽象出合理的介面來提高**的可維護性。
作業二 讀書筆記 軟體設計原則 設計模式
這個作業屬於哪個課程 2022軟體 開發技術 這個作業要求在 讀書筆記 軟體設計原則 設計模式 這個作業的目標 在我日常時間開發中,讓我印象深刻的是單例模式 j a中單例模式是一種常見的設計模式,單例模式的寫法有好幾種,這裡主要介紹三種 懶漢式單例 餓漢式單例 登記式單例。單例模式有以下特點 1 單...
作業二 讀書筆記 軟體設計原則,設計模式
這個作業屬於哪個課程 班級的鏈結 這個作業要求在 作業要求的鏈結 這個作業的目標 了解並能使用設計原則與設計模式並熟悉掌握markdown語法及中文排版 1.七大設計原則 設計原則 詳解開閉原則 ocp 乙個軟體實體,如類,模組和函式應該對外擴充套件開發,對內修改關閉。用抽象構建框架,用實現擴充套件...
作業二 讀書筆記 軟體設計原則 設計模式
這個作業屬於哪個課程 2022軟體 開發技術 這個作業要求在 讀書筆記 軟體設計原則 設計模式 這個作業的目標 對於軟體設計原則 設計模式的了解 下面是展示書中講述的設計原則和設計模式 設計原則 理解含義 單一職責原則 乙個類只負責乙個功能領域中的相應職責,即乙個類只實現某個領域的相應職責,這樣有利...