一、概念

桥接模式即将抽象部分与实现部分脱耦,使它们可以独立变化。

二、模型

三、代码实现

// 客户端调用
// 类似Web应用程序
class Client
{
static void Main(string[] args)
{
BusinessObject customers = new CustomersBusinessObject("ShangHai");
customers.Dataacces = new CustomersDataAccess(); customers.Add("小六");
Console.WriteLine("增加了一位成员的结果:");
customers.ShowAll();
customers.Delete("王五");
Console.WriteLine("删除了一位成员的结果:");
customers.ShowAll();
Console.WriteLine("更新了一位成员的结果:");
customers.Update("Learning_Hard");
customers.ShowAll(); Console.Read();
}
} // BLL 层
public class BusinessObject
{
// 字段
private DataAccess dataacess;
private string city; public BusinessObject(string city)
{
this.city = city;
} // 属性
public DataAccess Dataacces
{
get { return dataacess; }
set { dataacess = value; }
} // 方法
public virtual void Add(string name)
{
Dataacces.AddRecord(name);
} public virtual void Delete(string name)
{
Dataacces.DeleteRecord(name);
} public virtual void Update(string name)
{
Dataacces.UpdateRecord(name);
} public virtual string Get(int index)
{
return Dataacces.GetRecord(index);
}
public virtual void ShowAll()
{
Console.WriteLine();
Console.WriteLine("{0}的顾客有:", city);
Dataacces.ShowAllRecords();
}
} public class CustomersBusinessObject : BusinessObject
{
public CustomersBusinessObject(string city)
: base(city) { } // 重写方法
public override void ShowAll()
{
Console.WriteLine("------------------------");
base.ShowAll();
Console.WriteLine("------------------------");
}
} /// <summary>
/// 相当于三层架构中数据访问层(DAL)
/// </summary>
public abstract class DataAccess
{
// 对记录的增删改查操作
public abstract void AddRecord(string name);
public abstract void DeleteRecord(string name);
public abstract void UpdateRecord(string name);
public abstract string GetRecord(int index);
public abstract void ShowAllRecords();
} public class CustomersDataAccess:DataAccess
{
// 字段
private List<string> customers =new List<string>(); public CustomersDataAccess()
{
// 实际业务中从数据库中读取数据再填充列表
customers.Add("Learning Hard");
customers.Add("张三");
customers.Add("李四");
customers.Add("王五");
}
// 重写方法
public override void AddRecord(string name)
{
customers.Add(name);
} public override void DeleteRecord(string name)
{
customers.Remove(name);
} public override void UpdateRecord(string updatename)
{
customers[] = updatename;
} public override string GetRecord(int index)
{
return customers[index];
} public override void ShowAllRecords()
{
foreach (string name in customers)
{
Console.WriteLine(" " + name);
}
} }

最新文章

  1. html5 canvas 画图表
  2. 算法入门笔记------------Day1
  3. Apache Thrift
  4. SQL实现字段内容查找和替换
  5. Pivot运算符用于在列和行之间
  6. Logger之Logger.getLogger(CLass)
  7. 一周学会Mootools 1.4中文教程:(1)Dom选择器
  8. [转] 解析LayoutSubviews
  9. JSTL实现int数据的类型的长度
  10. 设计模式笔记——GoF设计模式汇总
  11. SSH Secure Shell Client最新版,解决Win10不兼容问题
  12. ActiveMQ入门示例
  13. Django_简单的数据库交互案例
  14. springboot jar包运行中获取资源文件
  15. 提bug
  16. 在ASP.NET Core中使用多环境
  17. c# 敏捷2 ForEach ToDictionary ToLookup Except比较
  18. Hibernate的执行流程和集合的映射关系
  19. 计蒜客 30994 - AC Challenge - [状压DP][2018ICPC南京网络预赛E题]
  20. wpf datagrid 隔行变色

热门文章

  1. python发布包流程
  2. Flex自定义组件开发
  3. 2018年长沙理工大学第十三届程序设计竞赛 E 小木乃伊到我家 【最短路】
  4. Data Structure Binary Tree: Morris traversal for Preorder
  5. 在数据库中使用数字ID作为主键的表生成主键方法
  6. hd acm1005
  7. Docker 单机网络
  8. SDUT 1048 Digital Roots
  9. JAVA强制类型转换(转载+自己的感想) - stemon
  10. linux shell编程(二) 条件测试