設計模式學習資料:(1)
1、策略模式
1.1 what? 策略模式是行為模式,意味著是對物件間互動行為的抽象。其將對某一問題的多種演算法封裝到各自的類,統一以相同的介面對外提供服務。
1.2 why? 清晰**架構,解耦演算法使用與演算法實現,方便演算法的增刪及修改。
1.3 how?策略模式實現方式:
(1)定義策略類介面即介面內方法,實現該策略介面的抽象類抽象出通用的過程**,子類繼承抽象類,實現每個子類獨特的策略處理**。
(2)策略的使用:策略使用方式一般由另一單獨的類對外提供服務,這裡一般要伴隨著策略的選擇與生成。具體策略的選擇由使用者的狀態最終決定。通常實現方式是if else堆疊,策略很多時,則**結構性、可讀性、可維護性會變差。可將使用者可能存在的狀態進行定義,並預先關聯好使用者狀態與具體策略間的關係,如使用map結構;若策略的執行需要由策略類的例項來執行,一般需要借助工廠類來遮蔽物件的生成細節,解耦物件的使用與生成,在工廠類中完成重複建立或單例的實現細節。
1.4 策略模式與狀態模式的區別
策略模式關注的是對演算法的封裝與使用,類似於輸入-選擇-輸出的過程。而狀態模式則關注的是物件的不同狀態,以及狀態間的扭轉過程
反思設計 從大師身上反思
從大師身上反思 本文節選自 未來產品設計 一書序言 don norman先生早期的論著所反映的思想已經影響並促進了我,我身邊重要的幾個設計朋友以及我的公司正在逐漸形成設計哲學觀及人生觀。在我的公司,我們常常在一起 全球已經出現或者正在為人類所感受的設計作品哪些是本能性的設計,哪些是行為層的設計,哪些...
學習設計模式 原型設計模式
先想一下既然要建立新的例項,為什麼不直接使用 new 而要設計出乙個原型模式進行例項的複製呢?這是因為 有的時候,我們也會在不指定類名的前提下生成例項,例如像圖形編輯器中拖動現有的模型工具製作圖形的例項,這種是非常典型的生成例項的過程太過複雜,很難根據類來生成例項場景,因此需要根據現有的例項來生成新...
前台設計的反思
最近在做乙個支援多種外觀的 主要使用不同的css定義改變外觀。由於現在可以換膚的 並不稀奇,而且asp.net 2.0也內建了對主題的支援,因此從技術上實現並不困難。然而在實際專案進行中,出現了不少前台ui的問題。這個專案是乙個改造專案,對已有的 新增功能,並修改ui樣式。新的樣式由其他的公司設計,...