C#设计模式(8)——桥接模式
2024-10-17 14:48:40
一、概念
桥接模式即将抽象部分与实现部分脱耦,使它们可以独立变化。
二、模型
三、代码实现
// 客户端调用
// 类似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);
}
} }
最新文章
- html5 canvas 画图表
- 算法入门笔记------------Day1
- Apache Thrift
- SQL实现字段内容查找和替换
- Pivot运算符用于在列和行之间
- Logger之Logger.getLogger(CLass)
- 一周学会Mootools 1.4中文教程:(1)Dom选择器
- [转] 解析LayoutSubviews
- JSTL实现int数据的类型的长度
- 设计模式笔记——GoF设计模式汇总
- SSH Secure Shell Client最新版,解决Win10不兼容问题
- ActiveMQ入门示例
- Django_简单的数据库交互案例
- springboot jar包运行中获取资源文件
- 提bug
- 在ASP.NET Core中使用多环境
- c# 敏捷2 ForEach ToDictionary ToLookup Except比较
- Hibernate的执行流程和集合的映射关系
- 计蒜客 30994 - AC Challenge - [状压DP][2018ICPC南京网络预赛E题]
- wpf datagrid 隔行变色