using System;
/***
* 简单工厂模式
* http://www.cnblogs.com/zhili/p/SimpleFactory.html
* **/
namespace SimpleFactoryPatternDemo
{
class Program
{
static void Main(string[] args)
{
SimpleFactory factory = new SimpleFactory();
BaseDao userDao = factory.CreateDao("user");
BaseDao roleDao = factory.CreateDao("role");
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";
}
}
class SimpleFactory
{
public BaseDao CreateDao(string type)
{
if (type.Equals("user"))
{
return new UserDao();
}
else if (type.Equals("role"))
{
return new RoleDao();
}
return null;
}
}
}