大話設計模式學習 第四周

2021-09-13 03:48:15 字數 571 閱讀 2778

定義了一種一對多的依賴關係,讓多個觀察者物件同事監聽某乙個主體物件。這個主題物件在狀態傳送改變時會通知所有觀察者物件,使他們能夠自動更新自己。

乙個系統分割成一系列相互協作的類導致維護相關物件之間的一致性很困難。但是為了維持一致性使得各個類之間耦合在一起又會給維護、擴充套件和重用帶來不便。觀察者模式解決了這個問題。

觀察者模式的作用在於接觸耦合,讓耦合的雙方依賴於抽象而不是具體細節,從而使得各自的變化都不會影響另外一邊。

缺點:

可以通過反射的方式對抽象工廠進行優化,反射需要依賴的工廠相關配置可以寫在配置檔案中切換工廠不需要修改程式。

在所有用到簡單工廠的地方都可以考慮使用反射技術去除switch和if,解除分支判斷帶來的耦合。但是反射用多了有什麼壞處呢?

當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了。

物件導向設計希望做到的是**的責任分離,實現單一職責原則,所以方法不應該過長。

狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類中,可以把複雜的判斷邏輯簡單化。

優點:

第四周學習

方法的結構 方法包括方法頭和方法體。方法頭包括方法的返回型別 有無 方法名稱和引數。方法體包括可執行 的語句序列。方法體內部的 執行 方法體是乙個塊。塊可以包含本地變數 控制流結構 方法呼叫 內嵌的塊。本地變數 用於儲存本地的或臨時的計算資料。存在性和生存週期僅限於建立他的塊及內嵌的塊。本地變數值型...

第四周學習

一 統計出 etc passwd檔案中其預設shell為非 sbin nologin的使用者個數,並將使用者都顯示出來 root centos7 echo 一共 cat etc passwd grep v sbin nologin wc l 個,分別是 cat etc passwd grep v s...

機器學習第四周

好,下面來總結一下學習內容。一開始就講了non linear hypothesis 非線性估計 這是當資料無法用簡單的線性模型處理的時候採用的方法,然後andrew就開始講神經網路了,這一周的內容沒有很詳細,就是大概地讓你知道一下神經網路,產生乙個初步的印象。還是先來把用到的符號交代了吧。符號含義 ...