现在有个需求,要把一些功能独立出来成一个服务,尽量通用化
比如说对信息有增加、删除、修改、列表
评论也有增加、删除、’列表等功能
现在想把这些功能整合成一个模块。对外部提供统一的接口。
并且尽量在不影响现有功能的情况下,还要考虑扩展性。
是不是要用的设计模式?
现在用了单例模式,要不要用的抽象工厂?
利用接口?
或许我对通用化理解有点错误?
希望各位指教
谢谢大家

解决方案 »

  1.   


    namespace Login
    {
        public interface ILogin
        {
            void Login(string _userName, string _passWord);
        }
    }
    namespace Login
    {
        public class IFactory
        {
            public static ILogin GetLoginInName(string _loginName)
            {
                switch (_loginName)
                { 
                    case "CommLogin":
                        return new CommLogin();
                    case "TopLogin":
                        return new TopLogin();
                    default:
                        return new CommLogin();
                }
            }
        }
    }namespace Login
    {
        public class TopLogin : ILogin
        {
            public void Login(string _userName, string _passWord)
            {
                Console.WriteLine("TopLogin");
            }
        }
    }namespace Login
    {
        public class CommLogin : ILogin
        {
            public void Login(string _userName, string _passWord)
            {
                Console.WriteLine("commLogin");
            }
        }
    }namespace Login
    {
        class Program
        {
            static void Main(string[] args)
            {
                ILogin i = IFactory.GetLoginInName("CommLogin");
                i.Login("comm","commpass");
                ILogin ii = IFactory.GetLoginInName("TopLogin");
                ii.Login("top", "toppass");
                Console.Read();
            }
        }
    }
      

  2.   

    感谢xuyiazl的回复
    你的写法我知道,利用工厂模式。
    不知道有没有更好的方法?
    谢谢
      

  3.   

    写DAL,IDAL,Model,数据库操作类,DALFactory实现构建
    在数据库操作通过工厂模式构建,实现兼容各种数据库
     public static DBOperator Create()
            {
                return Create("DALClass");
            }        public static DBOperator Create(string strKey)
            {
                string str = "UniversalDAL";
                string str2 = ConfigurationSettings.AppSettings[strKey];
                string typeName = str + "." + str2;
                return (DBOperator)Assembly.GetExecutingAssembly().CreateInstance(typeName);
            }
      public static IaddresslistDAL addresslistDALInstance()
            {
                string CacheKey = DALFactory._path + ".addresslistDAL";
                object objType = DALFactory.GetInstance(CacheKey);
                return (IaddresslistDAL)objType;
            }        public static DBOperator CreateViaName(string strClassName)
            {
                string typeName = "UniversalDAL." + strClassName;
                return (DBOperator)Assembly.GetExecutingAssembly().CreateInstance(typeName);
            }
    看看petshop或到51aspx.com里很多实例
      

  4.   

    模式跟框架是没法比的。如果你使用SQL Server,可以使用Linq to SQL,2小时就可以精通。
      

  5.   

    使用的是oracle
    感觉上面说的都是些基础的。
    通用化这方面还是没怎么发展
      

  6.   

    4楼  wuyq11
    你说的方法里面利用了反射
    如果数据量访问特别大的话,利用反射会不会支撑不住?
    我这个功能模块访问量很大的。每天应该有几千万吧
      

  7.   

    其实LZ所需要的,或者说LZ领导所要求的,不过就是个SqlHelper