嚮導就是類似於安裝軟體時,一大堆下一步的那個表單。每一個上一步下一步意味著表單上的控制項需要改變,相關的按鈕的功能等也需要改變。在製作一個嚮導時,最初設計中,我用的enum來表示每一個步驟。比如:switch(stepEnum){case StepEnum.FirstStep: //some work break;case StepEnum.SecondStep: //some work break://...default:
從牙膏廣告說起 在午茶小憩間,以“成語接龍”形式,通過帥哥美女之口巧妙地把牙齒常見的癥狀表達出來,從而突出雲南白藥牙膏的獨特功效。這一極其創意的廣告為雲南白藥贏得了巨大的市場,也使其產品為廣大消費者所熟悉,創造了家喻戶曉的品牌效應。 成語接龍是一種人們喜聞樂見的遊戲。就遊戲規則來講非常簡單,即用前一個成語的尾字作為下一個成語的首字。我們可以認為,遊戲參與者需要做三件事情:一是接前一位參與人的成語首字;二是說出成語;三是把成語尾字傳給後一位參與人。職責鏈(Chain of
橋模式,將意圖intension與實現implementor分離。其中,意圖通常用介面來定義,而實現相應為Factory,返回具體的意圖Implemention1。 public interface Intention { void Echo(string message); } public class Implemention1 : Intention { public void Echo(string message)
1)現實中,如果我家的電腦壞了,我就去找電腦維修工來你家來修,這個人會在知道我家這個對象,然後來我家讓電腦重裝系統;當然若你家的電腦壞了,也會找這個維修工來修理,但可能是換硬碟。這就是訪問者模式。電腦維修工是ConcreteVisitorA,你家是ConcreteElementA。UML圖如下: 怎麼在用戶端使用呢? 電腦維修工 v1 = new 電腦維修工(); 家庭 e = new 我家(); e.要求維修電腦(v1)
我很喜歡這個模式,因為它解決了對象賦值的問題。尤其是那個Clone方法,記憶猶新。使用情境:當一個系統應該獨立於產品的建立,構成和表示時,使用設計模式。.NET提供了ICloneable介面,只要實現了其Clone方法,在其中執行複製對象的操作。關鍵就是這個Clone方法,由於對象的複雜性,分為淺複製和深複製兩種:對於淺複製,可以使用Object的MembermiseClone方法: public class A : ICloneable { public object
這一節不講模式,講註冊工廠,是為了下一節研究Flyweight做準備。註冊工廠,就是建立一個小型“DB”,採用註冊方式,對執行個體進行管理。從實現上有兩種方式,但本質是相同的,都是在管理一組對象。為了講述方便,先建立一組父子類,Subject是ConcreteSubject1和ConcreteSubject2的父類。 public class Subject { } public class ConcreteSubject1 : Subject {
通過前面的介紹我們可以知道在靜態Main方法中執行繼承自FormShellApplication的對象執行個體可以進行很多架構的初始化工作,如載入模組,載入服務等。從FormShellApplication的類型定義中:public abstract class FormShellApplication<TWorkItem,TShell> : WindowsFormsApplication<TWorkItem,TShell> where TWorkItem :
現在我們來看看基於CAB的應用程式中非常重要的一個類。這個類可以認為是一個CAB應用的啟動點。他就是FormShellApplication。FormShellApplication的繼承關係如下:該類需要傳入兩個型別參數,一個是繼承自WorkItem的類(如果不需要通過重載WorkItem的OnRunStarted方法來實現更多處理,這裡可以直接使用WorkItem),一個是繼承自Form的表單。public class