hong

导航

抽象工厂设计模式(C#)

抽象工厂设计模式(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版本了

posted on 2005-07-16 12:38  hong  阅读(1092)  评论(0编辑  收藏  举报