百度百科说:实体类表示系统中的信息存储,它们一般用于表示系统所管理的核心概念。实体对象经常是被动和永久性的。它们的主要职责是存储和管理系统中的信息。
从概念我们可以看出,实体是比较稳定的。由于实体对象的相对稳定性,我们可以利用各种实体类生成器来生它。
所以,我在最开始学习它的时候,我给它的定义是,灵活性小,没有太大变化。甚至认为实体类就是实现属性的get与set方法。这两个访问器实现属性的读与写。
代码一:
/// <summary>
/// 用户表
/// </summary>
class UserInfo
{
private string userID;//用户ID
private string password;//密码
private string level; //权限
public string UserID
{
get { return userID; }
set { userID = value; }
}
public string PassWord
{
get { return password; }
set { password = value; }
}
public string Level
{
get { return Level; }
set { level = value; }
}
随着学习的深入,我们越来越认识到:实体类这个“老实人”,有时候并不像他名字起的一样那么老实。时不时来点花样,也会让你眼前一亮。
实体类合适的设计,能够很好的实现信息的隐蔽,使代码更加简洁。
后来,慢慢知道,实体类中加上构造方法,能够使得代码看起来很整齐。
我们给实体中属赋值的时候,只用这样:
代码二:
/// <summary>
/// 默认的构造方法
/// </summary>
public UserInfo() { }
/// <summary>
/// 带参数的构造方法
/// </summary>
/// <param name="UserID">用户ID</param>
/// <param name="PassWord">密码</param>
/// <param name="Level">权限</param>
public UserInfo(string UserID,string PassWord,string Level)
{
this.userID = UserID;
this.password = PassWord;
this.level = Level;
}
开始时,我们难免在U层写这样的代码:
代码三:
txtUserID.Text=dt.Rows[0]["UserID"].ToString();
我想只要你学过三层架构,写出这样的代码,你一定是怀着内疚的心情写出来的。在U层调用方法的时候,还需要知道数据库中的字段名。
这是,我们只需对实体类稍动手脚,写一个类似下面的构造方法,就可以解决这个问题。对外面暴露的是实体中字段,而不是数据库中字段。
代码四:
/// <summary>
/// 构造方法,实现字段隐藏
/// </summary>
/// <param name="dt"></param>
public UserInfo(DataTable dt)
{
this.userID = dt.Rows[0]["UserID"].ToString();
this.password = dt.Rows[0]["Password"].ToString();
this.level =dt.Rows[0]["Level"].ToString();
}
以上代码均出自同一段代码。其实,实体类的使用是非常灵活的。各层之间传递实体,能够很好的实现信息隐藏,实现代码的复用(怎样复用这里不做具体介绍)。
另外,在项目开发中,往往设计出好的实体类,会对项目的开发以及后期的维护工作,起到非常的好的作用;相反,相对较差的实体类设计,会让你的工程越来越像一堆垃圾。
此外,实体类中还可以设置彼此之间的继承。将代码一和代码二合在一起组成代码五,下面代码继承代码五:
代码六:
class UserManager : UserInfo
{
/// <summary>
/// 默认的构造方法
/// </summary>
public UserManager() { }
/// <summary>
/// 带参数的构造方法
/// </summary>
/// <param name="UserID">用户ID</param>
/// <param name="PassWord">密码</param>
/// <param name="Level">权限</param>
public UserManager(string UserID, string PassWord, string Level)
: base(){}
/// <summary>
/// 构造方法
/// </summary>
/// <param name="dt"></param>
public UserManager(DataTable dt)
{
base.UserID = dt.Rows[0]["UserID"].ToString();
base.PassWord = dt.Rows[0]["Password"].ToString();
base.Level =dt.Rows[0]["Level"].ToString();
}
}
在代码六中,我们还可以添加自己想添加的别的属性和相应的访问期,以及新的构造方法等。
在关于实体类,目前我知道的大概就这些,还有哪些我不知道,欢迎指教。