桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。
举实际例子:
1.手机目前最常用的的三种系统:IOS,WinPhone,Android(高手是想装什么系统就装什么系统)
2.什么手都可以打电话和发短信.
参与者:
Abstraction:抽象类。 系统抽象
RefinedAbstraction:扩充抽象类。 具体实现三个系统
Implementor:实现类接口。 //手机抽象
ConcreteImplementor:具体实现类 。 //具体的品牌手机实现打在哪个系统下电话和发短信
系统抽象:
public interface ISystem
{
string System();
}
三种系统具体实现
public string System()
{
return "Android";
}
public string System()
{
return "IOS 10";
}
public string System()
{
return "WinPhone";
}
下面将手机功能抽象,然把系统给传进去
public abstract class BasePhone
{
public ISystem System { get; set; }
public abstract void Call();
public abstract void Message();
}
下面是某品牌手机具体实现
public class Miui : BasePhone
{
public override void Call()
{
Console.WriteLine(@"我使用的是{0}手机,是{1}系统,我正在打电话功能.", this.GetType(), base.System);
}
public override void Message()
{
Console.WriteLine(@"我使用的是{0}手机,是{1}系统,我正在发信息.", this.GetType(), base.System);
}
}
客户端调用
ISystem sys = new WinPhone();
BasePhone mi = new Miui() {System = sys };
mi.Call();
mi.Message();
结果
demo:
https://download.csdn.net/download/lw8014/86814088https://download.csdn.net/download/lw8014/86814088