【Effective Java】架構與設計模式

  • MVC
    MVC是一種架構,或者可以說成是一種設計模式,它就是使應用程序的輸入,處理,輸出分離,細分爲Model,View,Controller.
    View(視圖)
    視圖就是負責和用戶交互的界面,在視圖層沒有真正的處理髮生,只有數據的輸出。並且用戶可操作。
    Model(模型)
    Model代表一些應用數據和業務邏輯,在MVC中Model最多的是處理任務,被模型返回的數據是中立的,也就是說數據格式和模型是無關的。
    Controller(控制器)
    Controller 接受用戶的輸入並調用模型和視圖去完成用戶需求。
  • MVC的優點
    分工明確。把數據庫開發,業務邏輯開發,頁面開發,三個分離。便於維護。
    鬆耦合。視圖層和業務層分離,在其他模塊變動的情況下,不互相影響結果。
    重用性。多個視圖重用一個模型。
  • MVC的缺點
    MVC沒有明確的標準或者說是明確的定義,往往需要花時間去思考怎麼設計這個MVC架構,並且MVC架構並不適合中小型的項目,它的價值很難在中小型項目裏體現。所以不要爲了MVC而去MVC。
  • MVP
    MVP主要分爲:Model,View,Presenter。可以注意到,Presenter取代了Controller,Presenter詞面意思是一個主導者,而MVP的模塊間的聯繫方式相較MVC也做了改變,Presenter扮演了一個重要角色,Presenter是中間的媒介,Model與View的聯繫必須要通過Presenter。
    Presenter,扮演的是中間人的身份。

  • 設計模式
    我們所熟知的有23種。5種創建型,7種結構型,11種行爲型。

  • 創建型

  • 工廠方法
    定義一個創建對象的接口,讓子類決定實例化哪個類。
  • 抽象工廠
    提供一個相關的或者相互依賴對象的接口,而無需指定它們具體的類。
  • 建造者
    將一個複雜對象的構建和它的表現分離,使得同樣的構建過程可以創建不同的表示。
  • 原型
    用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象。
  • 單例
    保證一個類只有一個實例,並提供一個訪問它的全局訪問點。

  • 結構型

  • 適配器
    將一個類的接口轉化爲另一個接口,Adapter模式使得原本由於接口不兼容而不能一起工作的類可以一起工作。
  • 橋接
    將抽象部分和它的實例部分分離,使得它們可以獨立變化。
  • 組合
    將對象組合成樹形結構,表示“整體-部分”的層次結構,組合使得用戶對單個對象和組合對象的使用具有一致性。
  • 裝飾
    動態的給一些對象添加一些額外的職責。
  • 外觀
    爲子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這一接口使得這一子系統更加容易使用。
  • 享元
    利用共享的技術有效的支持大量細粒度的對象。
  • 代理
    爲其他對象提供一種代理以控制對這個對象的訪問。

  • 行爲型

  • 解釋器
    給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。
  • 模塊方法
    定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模塊方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
  • 責任鏈
    使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係。將這些對象連成一條鏈,並沿着這條鏈傳遞該請求,直到有一個對象處理它爲止。
  • 命令
    將一個請求封裝爲一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可撤消的操作。
  • 迭代器
    提供一種方法順序訪問一個聚合對象中各個元素, 而又不需暴露該對象的內部表示。
  • 中介者
    用一箇中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互。
  • 備忘錄
    在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態。這樣以後就可將該對象恢復到原先保存的狀態。
  • 觀察者
    定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時, 所有依賴於它的對象都得到通知並被自動更新。
  • 狀態
    允許一個對象在其內部狀態改變時改變它的行爲。對象看起來似乎修改了它的類。
  • 策略
    定義一系列的算法,把它們一個個封裝起來, 並且使它們可相互替換。本模式使得算法可獨立於使用它的客戶而變化。
  • 訪問者
    定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。TemplateMethod 使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。


發佈了70 篇原創文章 · 獲贊 196 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章