看了几个工厂模式的例子,自己试着写了个,都不知道算不算是,呵呵
用户类------------------------------------------------------------------
class UserInfo
{
private int id;
public int Id
{
get { return id; }
set { id = value; }
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private string password;
public string Password
{
get { return password; }
set { password = value; }
}
}
用户管理接口-----------------------------------------------------------
interface UserInfoManage
{
string AddUser(UserInfo user);
string DeleteUser(UserInfo user);
}
管理员------------------------------------------------------------------
class AdminUser:UserInfoManage
{
#region UserInfoManage 成员
public string AddUser(UserInfo user)
{
return "添加管理员成功";
}
public string DeleteUser(UserInfo user)
{
return "删除管理员成功";
}
#endregion
}
普通用户----------------------------------------------------------
class CommonUser:UserInfoManage
{
#region UserInfoManage 成员
public string AddUser(UserInfo user)
{
return "添加普通用户成功";
}
public string DeleteUser(UserInfo user)
{
return "删除普通用户成功";
}
#endregion
}
用户类型的枚举--------------------------------------------------------------------
enum UserType{CommonUser,AdminUser};
工厂类-----------------------------------------------------------------------------
class UserInfoFactory
{
private static UserInfoManage user;
public static UserInfoManage NewInstance(UserType type)
{
switch (type)
{
case UserType.CommonUser:
user = new CommonUser();
break;
case UserType.AdminUser:
user = new AdminUser();
break;
default:
user = null;
break;
}
return user;
}
}
程序调用----------------------------------------------------------------------------------------
UserInfoManage user = UserInfoFactory.NewInstance(UserType.CommonUser);
MessageBox.Show(user.AddUser());
看网上说的意思貌似我的只是简单工厂,但我看抽象工厂除了复杂一些以外没什么,主要还是不知道怎么用,就是不知道好在哪儿,呵呵,有高手的话还望指点指点,给个有意义的小例子
对,这个就是简单工厂;简单工厂,抽象工厂,反射工厂就是复杂一些,很多资料的
case还能再重构,呵呵。
现在很多通用数据库访问类都这样做,大话设计模式一书中的例子都不错。
创建型的目的只有一个,就是控制创建点。
现在所有的创建工作都放在工厂里面,你可以把这个工厂放在特定的位置,减少代码的依赖,集中修改。