工厂模式

using System;

/***
 * 工厂模式
 * http://www.cnblogs.com/zhili/p/3310610.html
 * ****/
namespace FactoryPatternDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("FactoryPatternDemo");
            AbstractFactory userFactory = new UserDaoFactory();
            AbstractFactory roleFactory = new RoleDaoFactory();
            BaseDao userDao = userFactory.CreateDao();
            BaseDao roleDao = roleFactory.CreateDao();
            userDao.Open();
            roleDao.Open();
            userDao.Close();
            roleDao.Close();
            Console.Read();
        }
    }

    abstract class BaseDao
    {
        public string TableName { get; set; }
        public void Open()
        {
            Console.WriteLine("open conn, table name: " + this.TableName);
        }
        public void Close()
        {
            Console.WriteLine("close conn, table name: " + this.TableName);
        }
    }

    class UserDao : BaseDao
    {
        public UserDao()
        {
            this.TableName = "user";
        }
    }

    class RoleDao : BaseDao
    {
        public RoleDao()
        {
            this.TableName = "role";
        }
    }

    abstract class AbstractFactory
    {
        public abstract BaseDao CreateDao();

    }

    class UserDaoFactory : AbstractFactory
    {
        public override BaseDao CreateDao()
        {
            return new UserDao();
        }
    }

    class RoleDaoFactory : AbstractFactory
    {
        public override BaseDao CreateDao()
        {
            return new RoleDao();
        }
    }
}

 

posted @ 2013-12-20 09:06  WBFF  阅读(104)  评论(0)    收藏  举报