抽象工廠設計模式(C#)

來源:互聯網
上載者:User
抽象工廠設計模式(C#)
什麼是抽象工廠設計模式呢?
假如我們建立了一個類如下:
public abstract class  class1{
public virtral int aaa(){
 }
public virtral int bbb(){
 }
......
}
我們知道用abstract聲明的類必須使用繼承才能使用,例如我們可能在sqlserver下使用,也可能在Oracle下使用,那麼我們不得不分別寫sqlserver下的繼承類和Oracle下的繼承類,如下:
public class Oracle :class1{
......
}
public class Sqlserver :class1{
......
}
代碼中我們這樣執行個體化
Oracle object1=new object1
Sqlserver objiect2=new object2
問題來了,如果我們只想寫一次代碼,就能夠同時使用sqlserver和oracle兩個版本,這時最好的解決方案就是抽象工廠設計模式了,我們可以在class1中寫如下靜態方法:
public static class1 CreateHelper( string objAssembly, string objectType ){
   Assembly assembly = Assembly.Load( objAssembly );
   object objAssembly= assembly.CreateInstance( objectType );
   if( objAssembly= is sqlserver)
   {
    return objAssembly= as class1
   }
   else
   {
    throw new InvalidOperationException( "不能建立繼承class1的類");
   }
}
寫sqlserver和oracle下的通用代碼
class1 myclass=class1.CreateHelper("你的程式集名","sqlserver類名或oracle類名")
有一點必須注意即:在myclass的方法中的代碼必須是sqlserver和oracle通用的代碼,這樣你寫的程式也可以同時適合sqlserver和oracle版本了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.