1.建造者类
namespace Data
{
/// <summary>
/// 抽象出所有子类统一的操作,然后使用使用Director类去
/// 实例化要具体功能的类.
///
/// 建造者模式:当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时使用
/// </summary>
public abstract class Builder
{
public abstract string InsertDB();
public abstract string UpdateDB();
public abstract string DelDB();
}
public class Director
{
Builder builder;
public Builder CreaterOperateDB(Builder builderObj)
{
builder = builderObj;
return builder;
}
}
public class OperateEmployeesDB : Builder
{
public override string InsertDB()
{
NorthwindEntities db = new NorthwindEntities();
Employees e = new Employees();
e.LastName = "yoyozhu";
e.FirstName = "zhushao";
db.AddToEmployees(e);
db.SaveChanges();
return "添加数据成功";
}
public override string UpdateDB()
{
NorthwindEntities db = new NorthwindEntities();
Employees e = db.Employees.Where(c => c.EmployeeID == 44).FirstOrDefault();
db.DeleteObject(e);
db.SaveChanges();
return "删除数据成功";
}
public override string DelDB()
{
NorthwindEntities db = new NorthwindEntities();
Employees e = db.Employees.Where(c => c.EmployeeID == 44).FirstOrDefault();
e.LastName = "chuanshi_yoyo";
db.SaveChanges();
return "修改数据成功";
}
}
public class OperateCustomersDB : Builder
{
public override string InsertDB()
{
NorthwindEntities db = new NorthwindEntities();
Customers e = new Customers();
e.ContactName = "yoyozhu";
e.CompanyName = "zhushao";
db.AddToCustomers(e);
db.SaveChanges();
return "添加数据成功";
}
public override string UpdateDB()
{
NorthwindEntities db = new NorthwindEntities();
Customers e = db.Customers.Where(c => c.CompanyName == "zhushao").FirstOrDefault();
db.DeleteObject(e);
db.SaveChanges();
return "删除数据成功";
}
public override string DelDB()
{
NorthwindEntities db = new NorthwindEntities();
Customers e = db.Customers.Where(c => c.CompanyName == "zhushao").FirstOrDefault();
db.DeleteObject(e);
db.SaveChanges();
return "删除数据成功";
}
}
}
2.调用
static void Main(string[] args)
{
//建造者模式,看起来非常像策略模式
Director d = new Director();
Builder b = d.CreaterOperateDB(new OperateEmployeesDB());
Console.WriteLine( b.InsertDB());
Console.ReadKey();
}