抽象工廠設計模式(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版本了