高手看看该怎么重构噢。
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的便利性。大家有啥好办法噢?