高手看看该怎么重构噢。

本文讨论了一个具体的逻辑层访问数据层的实现,并针对存在的问题进行了分析。主要问题在于数据访问接口定义不足,导致逻辑层代码紧耦合。作者探讨了解决方案,包括如何增强接口定义以提高代码的灵活性和可维护性。

    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的便利性。大家有啥好办法噢?

转载于:https://www.cnblogs.com/fanlihang/archive/2010/02/27/1674899.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值