C#----設計模式介面 工廠模式的理解

努力的藍精靈發表於2014-02-18
針對介面程式設計能幫助達到物件導向開發和設計中"低耦合"的要求.   
      舉個例子:某公司有一臺特殊印表機,還可以使用一年,一年後可能換為另一種印表機,這兩種印表機都特殊而貴.所以現在的程式希望換了印表機後也少量修改就可用.   
    方法:   
    1,定義一個印表機介面.   
    2,定義印表機類A,B,分別實現此介面.   
    3,定義一個工廠類,在類中可選擇返回由A實現的介面,或者由B實現的介面.   
    4,在程式中使用印表機時,就可以使用工廠類來呼叫印表機,而不需要知道具體的是什麼印表機.   
        如果印表機換了,只需要修改工廠類就行了.如果有一千個地方都呼叫過印表機,就不需要一個一個修改.修改一個地方就行了.介面充當一個隔離層的作用.   
    
    在物件導向的設計中,介面的作用非常重要,

C介面 工廠類 - cxl_goto - cxl_goto的部落格//定義印表機介面  
C介面 工廠類 - cxl_goto - cxl_goto的部落格C介面 工廠類 - cxl_goto - cxl_goto的部落格  interface     Iprint...{  
C介面 工廠類 - cxl_goto - cxl_goto的部落格      bool     PrintData(string     data);  
C介面 工廠類 - cxl_goto - cxl_goto的部落格    }  
C介面 工廠類 - cxl_goto - cxl_goto的部落格   
C介面 工廠類 - cxl_goto - cxl_goto的部落格  //定義印表機類A,實現介面  
C介面 工廠類 - cxl_goto - cxl_goto的部落格C介面 工廠類 - cxl_goto - cxl_goto的部落格  class     PrintA:Iprint...{  
C介面 工廠類 - cxl_goto - cxl_goto的部落格C介面 工廠類 - cxl_goto - cxl_goto的部落格      public   virtual   bool     PrintData(string     data)...{  
C介面 工廠類 - cxl_goto - cxl_goto的部落格          //具體業務邏輯略  
C介面 工廠類 - cxl_goto - cxl_goto的部落格        }  
C介面 工廠類 - cxl_goto - cxl_goto的部落格    }  
C介面 工廠類 - cxl_goto - cxl_goto的部落格   
C介面 工廠類 - cxl_goto - cxl_goto的部落格    定義印表機類B,實現介面  
C介面 工廠類 - cxl_goto - cxl_goto的部落格C介面 工廠類 - cxl_goto - cxl_goto的部落格  class     PrintB:Iprint...{  
C介面 工廠類 - cxl_goto - cxl_goto的部落格C介面 工廠類 - cxl_goto - cxl_goto的部落格      public   virtual   bool     PrintData(string     data)...{  
C介面 工廠類 - cxl_goto - cxl_goto的部落格          //具體業務邏輯略  
C介面 工廠類 - cxl_goto - cxl_goto的部落格        }  
C介面 工廠類 - cxl_goto - cxl_goto的部落格    }  
C介面 工廠類 - cxl_goto - cxl_goto的部落格   
C介面 工廠類 - cxl_goto - cxl_goto的部落格  //定義工廠類  
C介面 工廠類 - cxl_goto - cxl_goto的部落格C介面 工廠類 - cxl_goto - cxl_goto的部落格  class     PrintFactory...{  
C介面 工廠類 - cxl_goto - cxl_goto的部落格C介面 工廠類 - cxl_goto - cxl_goto的部落格      public     Iprint     CreatePrint()...{  
C介面 工廠類 - cxl_goto - cxl_goto的部落格        //返回一個由打機類A,或B實現的介面,比如  
C介面 工廠類 - cxl_goto - cxl_goto的部落格          return   new     PrintA();  
C介面 工廠類 - cxl_goto - cxl_goto的部落格        }  
C介面 工廠類 - cxl_goto - cxl_goto的部落格    }  
C介面 工廠類 - cxl_goto - cxl_goto的部落格   
C介面 工廠類 - cxl_goto - cxl_goto的部落格  //通過工廠類,呼叫印表機  
C介面 工廠類 - cxl_goto - cxl_goto的部落格C介面 工廠類 - cxl_goto - cxl_goto的部落格  private   void     button1_Click(object     sender,EventArgs     e)...{  
C介面 工廠類 - cxl_goto - cxl_goto的部落格        PrintFactory     myFactory=new     PrintFactory();  
C介面 工廠類 - cxl_goto - cxl_goto的部落格        Iprint     myPrint=myFactory.CreatePrint();  
C介面 工廠類 - cxl_goto - cxl_goto的部落格        myPrint.PrintData("這樣做很方便啊");  
C介面 工廠類 - cxl_goto - cxl_goto的部落格    }   

相關文章