概述
桥接模式是一种结构型的设计模式,主要逻辑是将抽象部分和实现部分分离,程序设计要满足高内聚低耦合,所以桥接模式的设计可以实现程序间的解耦,抽象部分和实现部分分别控制,提高了代码的可维护性和复用性。实现逻辑是,实现层继承对应接口,抽象层规定传入方法的类型,然后具体的抽象类继承抽象类,然后重写对应的方法。实现逻辑如下
需求:在一条河边,有木材和石头需要通过货船运送到河对岸,一次只能运送一种材料,设计实现。
桥接模式
internal class Program
{
private static void Main(string[] args)
{
// 运送木材
ICommodity wood = new Wood();
Abstraction woodCargoShip = new CargoShip(wood);
woodCargoShip.Transport();
// 运送石头
ICommodity stone = new Stone();
Abstraction stoneCargoShip = new CargoShip(stone);
stoneCargoShip.Transport();
}
public interface ICommodity//商品接口
{
void TransportGoods();
}
public class Wood : ICommodity//木材
{
public void TransportGoods()
{
Console.WriteLine("运送木材");
}
}
public class Stone : ICommodity//石头
{
public void TransportGoods()
{
Console.WriteLine("运送石头");
}
}
public abstract class Abstraction//抽象基类
{
protected ICommodity commodity;
protected Abstraction(ICommodity _commodity)
{
commodity = _commodity;
}
public abstract void Transport();
}
public class CargoShip : Abstraction//货船
{
public CargoShip(ICommodity commodity) : base(commodity) { }
public override void Transport()
{
commodity.TransportGoods();
}
}
}
输出结果:
运送木材
运送石头