抽象工厂模式:提供一个创建一系列相关或互相依赖对象的接口,而无需制定他们具体的类。
class User
{
private int _id;//字段
public int Id // 属性
{
set { _id = value; }
get { return _id; }
}
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
}
class Department
{
private int _id;
public int Id
{
get { return _id; }
set { _id = value; }
}
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
}
interface IFactory
{
IUser CreateUser();
IDepartment CreateDepartment();
}
interface IUser
{
void Insert(User user);
User GetUser(int id);
}
interface IDepartment
{
void Insert(Department department);
Department GetDepartment(int id);
}
class SqlserverFactory:IFactory
{
public IUser CreateUser()
{
return new SqlserverUser();
}
public IDepartment CreateDepartment()
{
return new SqlserverDepartment();
}
}
class AccessFactory:IFactory
{
public IUser CreateUser()
{
return new AccessUser();
}
public IDepartment CreateDepartment()
{
return new AccessDepartment();
}
}
class SqlserverUser:IUser
{
public void Insert(User user)
{
Console.WriteLine("在sqlserver中给user增加一条记录");
}
public User GetUser(int id)
{
Console.WriteLine("在sqlserver中根据id得到user的一条记录");
return null;
}
}
class SqlserverDepartment:IDepartment
{
public void Insert(Department department)
{
Console.WriteLine("在sqlserver中给Department表增加一条记录");
}
public Department GetDepartment(int id)
{
Console.WriteLine("在sqlserver中根据id得到department表的一条记录");
return null;
}
}
class AccessUser:IUser
{
public void Insert(User user)
{
Console.WriteLine("在accseeserver中给user增加一条记录");
}
public User GetUser(int id)
{
Console.WriteLine("在accessserver中根据id得到user的一条记录");
return null;
}
}
class AccessDepartment:IDepartment
{
public void Insert(Department department)
{
Console.WriteLine("在access中给Department表增加一条记录");
}
public Department GetDepartment(int id)
{
Console.WriteLine("在access中根据id得到department表的一条记录");
return null;
}
}
客户端
static void Main(string[] args)
{
IFactory factory = new SqlserverFactory();
User user = new User();
IUser iu = factory.CreateUser();
iu.Insert(user);
iu.GetUser(1);
Department department = new Department();
IDepartment id = factory.CreateDepartment();
id.Insert(department);
id.GetDepartment(1);
Console.Read();
}