首页 新闻 会员 周边

抽象工厂模式

0
悬赏园豆:10 [已关闭问题]

看了几个工厂模式的例子,自己试着写了个,都不知道算不算是,呵呵

用户类------------------------------------------------------------------

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());

看网上说的意思貌似我的只是简单工厂,但我看抽象工厂除了复杂一些以外没什么,主要还是不知道怎么用,就是不知道好在哪儿,呵呵,有高手的话还望指点指点,给个有意义的小例子


问题补充: 能给个例子不? 我去网上看了好几个工厂的例子,有反射工厂,有抽象工厂,还有点不大理解:抽象工厂在客户端不还是要用到哪些定义的类,反射工厂好像不用了,但是反射工厂就是不知道用在什么地方,大家可以给小例子的给个例子啊,只是说的话,不明白的。。 谢谢啦。。。
顾晓北的主页 顾晓北 | 专家六级 | 园豆:10844
提问于:2010-07-14 16:53
< >
分享
其他回答(2)
0

对,这个就是简单工厂;简单工厂,抽象工厂,反射工厂就是复杂一些,很多资料的

LittlePeng | 园豆:3445 (老鸟四级) | 2010-07-14 20:20
0

case还能再重构,呵呵。

现在很多通用数据库访问类都这样做,大话设计模式一书中的例子都不错。

Astar | 园豆:40805 (高人七级) | 2010-07-15 08:15
0

创建型的目的只有一个,就是控制创建点。

 

现在所有的创建工作都放在工厂里面,你可以把这个工厂放在特定的位置,减少代码的依赖,集中修改。

诺贝尔 | 园豆:37 (初学一级) | 2010-07-18 09:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册