本帖最后由 a13623127108 于 2010-06-06 22:34:45 编辑

解决方案 »

  1.   

    你这个用“工厂模式”或“简单工厂模式”就可以了,“抽象工厂模式”是用来生成一系列的“产品”的,你这个需求的“产品”就是“服务器列表”简单工厂模式:public abstract class 服务器列表{
      public List<T> 列表{get;set;} // T表示服务器信息的class
    }public class GameA服务器列表 : 服务器列表{}public class GameB服务器列表 : 服务器列表{}public class 简单服务器列表工厂{
       public static 服务器列表 GenerateServer( string key ){
           if(key == "GameA"){
              return new GameA服务器列表();
           }
           else if(key == "GameB"){
              return new GameB服务器列表();
           }
           ...
       }
    }
      

  2.   

    主要是数据库serverA跟serverB字段不一样工厂模式用到三层到底是怎么个思路啊
      

  3.   

    楼主如果只把“服务器列表”作为产品的话,“工厂模式”或“简单工厂模式”足以满足LZ的代码复用的要求了。如果还能找出别的产品的话,那才要使用“抽象工厂”,“抽象工厂”是为了保证同一个工厂所制造出来的各种产品是属于同一个系列的,如果只有一种产品,可以不使用“抽象工厂”,因为它会增加class的数量,增加系统的复杂度。在.NET中,ADO.NET就是最好的“抽象工厂”的例子。
    System.Data.Common 命名空间中的class就是抽象的“产品”,如DbConnection、DbCommand;
    SqlClient、OleDbClient、OracleClient 命名空间中的对应class就是实际的“产品”;
    而DbProvider 就是抽象工厂了,它负责制造DbConnection等产品。
      

  4.   

    有不同的字段,但是结构是一样的?  不懂如果不闲麻烦,可以提供两套 DAL Model把访问哪个DAL 变得可配置, 根据传进来的程序集信息访问不同DAL,,