我们逛某宝买衣服一般是先看款式,挑到自己喜欢的款式接下来就是看看衣服的颜色和适合自己的尺码,太大太小不合身,颜色不搭配都是很可怕的事情。衣服的颜色和尺码是影响衣服变化的两个维度,客户可根据自己的需求来选择自己心仪适合的衣服,所以今天给大家带来设计模式是桥接模式,桥接模式将两个变化的维度设计为两个独立变化的结构,使用一个第三方的抽象层来关联,这个抽象层就好比是一座桥,两个独立变化的结构就好像是河的两个对面,这样就能够使之关联在一起
桥接模式(Bridge Pattern):将抽象部分与实现部分解耦,使得两者都能够独立变化
桥接模式的结构
Abstraction(抽象类):定义抽象类接口,维护Implementor类型的对象或者该对象,与该接口之间具有关联关系即可包含抽象业务也可以包含具体业务方法
abstract class Abstraction
{
protected Implementor impl;
public void SetImpl(Implementor implementor)
{
this.impl = implementor;
}
public abstract void Operation();
}
RefinedAbstraction(扩充抽象类):实现Abstraction的抽象方法,可以调用Implementor中定义的业务方法
class RefinedAbstraction : Abstraction
{
public override void Operation()
{
impl.OperationImpl();
}
}
Implementor(实现类接口):定义实现类接口,一般来说这个接口就是给抽象类Abstraction来调用的,Implementor这个接口里面的方法可以跟Abstraction里面的方法一致,也可以不是,Abstraction里面可能实现自己的方法,比Implementor更复杂,通过关联来代替继承关系
interface Implementor
{
void OperationImpl();
}
ConcreteImplementor(具体实现类):主要实现Implementor接口的具体实现,一般来说代替父类给抽象类提供业务操作方法
class ConcreteImplementor : Implementor
{
public void OperationImpl()
{
Console.WriteLine("实现");
}
}
客户端使用如下
Implementor impl = new ConcreteImplementor();
RefinedAbstraction refined = new RefinedAbstraction();
refined.SetImpl(impl);
refined.Operation();