先来看看未使用继承时的代码:
/// <summary>
/// 保存在Session中的用户登录信息
/// 作者:唐军平
/// 时间:2009-7-18
/// </summary>
public class ShortUserInfo
{
private int userId;
private string userName;
private string realName;
/// <summary>
/// 用户编号
/// </summary>
public int UserId
{
get { return userId; }
set { userId = value; }
}
/// <summary>
/// 用户帐号
/// </summary>
public string UserName
{
get { return userName; }
set { userName = value; }
}
/// <summary>
/// 用户的真实姓名
/// </summary>
public string RealName
{
get { return realName; }
set { realName = value; }
}
}
/// <summary>
/// 用户详细信息
/// 作者:唐军平
/// 时间:2009-7-18
/// </summary>
public class UserInfo
{
public UserInfo()
{ }
#region Model
private int userId;
private string userName;
private string realName;
private string passwords;
private bool sex;
private string email;
private string mobile;
private string phone;
private DateTime regDate;
private DateTime loginDate;
private string loginIp;
/// <summary>
/// 用户编号
/// </summary>
public int UserId
{
set { userId = value; }
get { return userId; }
}
/// <summary>
/// 用户名
/// </summary>
public string UserName
{
set { userName = value; }
get { return userName; }
}
/// <summary>
/// 真实姓名
/// </summary>
public string RealName
{
set { realName = value; }
get { return realName; }
}
/// <summary>
/// 密码
/// </summary>
public string Passwords
{
set { passwords = value; }
get { return passwords; }
}
/// <summary>
/// 性别
/// </summary>
public bool Sex
{
set { sex = value; }
get { return sex; }
}
/// <summary>
/// 电子邮件
/// </summary>
public string Email
{
set { email = value; }
get { return email; }
}
/// <summary>
/// 手机号
/// </summary>
public string Mobile
{
set { mobile = value; }
get { return mobile; }
}
/// <summary>
/// 电话
/// </summary>
public string Phone
{
set { phone = value; }
get { return phone; }
}
/// <summary>
/// 注册时间
/// </summary>
public DateTime RegDate
{
set { regDate = value; }
get { return regDate; }
}
/// <summary>
/// 最后登录时间
/// </summary>
public DateTime LoginDate
{
set { loginDate = value; }
get { return loginDate; }
}
/// <summary>
/// 最后登录IP
/// </summary>
public string LoginIp
{
set { loginIp = value; }
get { return loginIp; }
}
比较这两个类,就会发现ShorUserInfo里的内容,在UserInfo里已存在。那么这种写法,显然有点臃肿。那么有哪种办法可以有效地优化一下呢?继承就可以,我们可以把ShorUserInfo作为UserInfo的基类,这样,UserInfo继承了ShortUserInfo之后,也就继承了ShorUserInfo里的字段和属性。ShortUserInfo所具有的,UserInfo也拥有了。好了,下边我来改造一下上边的代码:
/// <summary>
///保存在Session中的用户登录信息
/// 作者:唐军平
/// 时间:2009-7-18
/// </summary>
public class ShortUserInfo
{
private int userId;
private string userName;
private string realName;
/// <summary>
/// 用户编号
/// </summary>
public int UserId
{
get { return userId; }
set { userId = value; }
}
/// <summary>
/// 用户帐号
/// </summary>
public string UserName
{
get { return userName; }
set { userName = value; }
}
/// <summary>
/// 用户的真实姓名
/// </summary>
public string RealName
{
get { return realName; }
set { realName = value; }
}
}
/// <summary>
/// 用户详细信息
/// 作者:唐军平
/// 时间:2009-7-18
/// </summary>
public class UserInfo : ShortUserInfo
{
public UserInfo()
{ }
private string passwords;
private bool sex;
private string email;
private string mobile;
private string phone;
private DateTime regDate;
private DateTime loginDate;
private string loginIp;
/// <summary>
/// 密码
/// </summary>
public string Passwords
{
set { passwords = value; }
get { return passwords; }
}
/// <summary>
/// 性别
/// </summary>
public bool Sex
{
set { sex = value; }
get { return sex; }
}
/// <summary>
/// 电子邮件
/// </summary>
public string Email
{
set { email = value; }
get { return email; }
}
/// <summary>
/// 手机号
/// </summary>
public string Mobile
{
set { mobile = value; }
get { return mobile; }
}
/// <summary>
/// 电话
/// </summary>
public string Phone
{
set { phone = value; }
get { return phone; }
}
/// <summary>
/// 注册时间
/// </summary>
public DateTime RegDate
{
set { regDate = value; }
get { return regDate; }
}
/// <summary>
/// 最后登录时间
/// </summary>
public DateTime LoginDate
{
set { loginDate = value; }
get { return loginDate; }
}
/// <summary>
/// 最后登录IP
/// </summary>
public string LoginIp
{
set { loginIp = value; }
get { return loginIp; }
}
Ok,改造成功。这样,我们既实现了我们想要的效果,又简化了代码。