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