将抽象部分和实现部分分离,使它们可以独立变化
主要组成:
Abstraction(抽象类)
RefinedAbstraction(抽象类的子类)
Implementor(实现接口)
ConcreteImplementor(具体实现类)
适配器和桥接的区别:
- 适配器:用来帮助无关的类协同工作,通常在系统设计完成后才使用。
桥接:在系统开始时就使用,使抽象部分和实现部分分离。
抽象和实现:
using System;
namespace Bridge
{
/// <summary>
/// 统计抽象类
/// </summary>
abstract class StatisticsAbstraction
{
protected IStatisticsImp StatisticsImp { get; set; }
public abstract void Operation();
}
/// <summary>
/// 统计和
/// </summary>
class StatisticsSum : StatisticsAbstraction
{
public override void Operation()
{
StatisticsImp = new ComputeSumImp();
StatisticsImp.OperationImp();
}
}
/// <summary>
/// 统计均值
/// </summary>
class StatisticsMean : StatisticsAbstraction
{
public override void Operation()
{
StatisticsImp = new ComputeMeanImp();
StatisticsImp.OperationImp();
}
}
/// <summary>
/// 实现接口
/// </summary>
interface IStatisticsImp
{
void OperationImp();
}
/// <summary>
/// 实现求和
/// </summary>
class ComputeSumImp : IStatisticsImp
{
public void OperationImp()
{
Console.WriteLine("求和");
}
}
/// <summary>
/// 实现求均值
/// </summary>
class ComputeMeanImp : IStatisticsImp
{
public void OperationImp()
{
Console.WriteLine("求均值");
}
}
}
调用:
using System;
namespace Bridge
{
class Program
{
static void Main(string[] args)
{
//统计均值
StatisticsAbstraction statisticsAbstraction = new StatisticsMean();
statisticsAbstraction.Operation();
//统计和
statisticsAbstraction=new StatisticsSum();
statisticsAbstraction.Operation();
}
}
}
结果:
参考资料:《设计模式-可复用面对对象软件的基础》