高手看看该怎么重构噢。

    public class MBllAdmin:IAdminBll
    {
        #region IAdminBll 成员
        private MDalAdmin DalAdmin;
        public MBllAdmin()
        {
            DalAdmin = new MDalAdmin();
        }

        public Blog.Models.Entities.Admin Login(Blog.Models.Entities.Admin value)
        {
            if (DalAdmin.GetByNameAndPassword(value.name, value.password))
            {
                return DalAdmin.Select(value.id);
            }
            else
            {
                return null;
            }
        }

        public bool Add(Blog.Models.Entities.Admin value)
        {
            if (DalAdmin.One(value))
                throw new Exception("错误,该用户已存在!");
            DalAdmin.Add(value);
            return true;           
        }

        public bool Remove(Guid id)
        {
            try
            {
                DalAdmin.Remove(id);
                return true;
            }
            catch
            {
                return false;
            }
           
        }

        public bool ChangePassword(Blog.Models.Entities.Admin value)
        {
            try
            {
                DalAdmin.Update(value);
                return true;
            }
            catch
            {
                return false;
            }
        }

        public List<Blog.Models.Entities.Admin> GetAll()
        {
            return DalAdmin.Fill();
        }

        #endregion
    }

这个是我逻辑层访问数据层的代码。而我的ADMIN数据层是这样继承的。

public class MDalAdmin : MDalBase<Admin>,IAdminDal

我的MDALBASE是继承了一IDALBASE接口并实现代码的。

MDalBase<T> : IDalBasecs<T>

 

其中IADMINDAL和IBALBASECS<T>的定义分别如下

IBALBASECS<T>:

        bool One(T value);
        void Add(T t);
        void Remove(Guid id);
        void Update(T value);
        T Select(Guid id);
        List<T> Fill();

IADMINDAL:

      bool GetByNameAndPassword(string name,string password);

 

那么就有一个很严重的问题了。IADMINDAL接口所包含的特征太少。在逻辑层访问数据层的时候不得不使用实体化的MDalAdmin,无法获得相关的接口。那么如果我更新数据访问形式时就不得不更改MBllAdmin的构造函数了,而且我也无法保持MDalAdmin的稳定性。(比如说漏写方法之类的。没有继承DALBASE)。可是我又不想拒绝DALBASE的便利性。大家有啥好办法噢?

posted @ 2010-02-27 18:42  飘扬  阅读(240)  评论(0编辑  收藏  举报