设计模式--桥接模式

2023-07-03 13:26:56 浏览数 (1)

桥接模式是一种结构型设计模式,它将对象的接口(抽象部分)与实现(实现部分)分离,从而使它们能够独立地变化。这种模式通常使用接口和抽象类来实现这种分离。通过这种方式,对象的抽象部分不必了解其实现部分的细节。

下面是一个使用C#语言实现桥接模式的示例代码:

代码语言:javascript复制
// 定义实现部分的接口
interface IWorkshop {
    void DoWork();
}

// 具体实现类A
class WorkshopA : IWorkshop {
    public void DoWork() {
        Console.WriteLine("WorkshopA is working.");
    }
}

// 具体实现类B
class WorkshopB : IWorkshop {
    public void DoWork() {
        Console.WriteLine("WorkshopB is working.");
    }
}

// 定义抽象部分的接口
interface IVehicle {
    void Run();
    void SetWorkshop(IWorkshop workshop);
}

// 抽象类实现部分的接口,持有一个 IWorkshop 的引用
abstract class Vehicle : IVehicle {
    protected IWorkshop workshop;

    public Vehicle(IWorkshop workshop) {
        this.workshop = workshop;
    }

    public void SetWorkshop(IWorkshop workshop) {
        this.workshop = workshop;
    }

    public abstract void Run();
}

// 具体实现类Car
class Car : Vehicle {
    public Car(IWorkshop workshop) : base(workshop) {
    }

    public override void Run() {
        Console.WriteLine("Car is running.");
        workshop.DoWork();
    }
}

// 具体实现类Bike
class Bike : Vehicle {
    public Bike(IWorkshop workshop) : base(workshop) {
    }

    public override void Run() {
        Console.WriteLine("Bike is running.");
        workshop.DoWork();
    }
}

// 客户端代码
class Client {
    static void Main() {
        IWorkshop workshopA = new WorkshopA();
        IWorkshop workshopB = new WorkshopB();
        IVehicle car = new Car(workshopA);
        IVehicle bike = new Bike(workshopB);

        car.Run();
        bike.Run();

        car.SetWorkshop(workshopB);
        bike.SetWorkshop(workshopA);

        car.Run();
        bike.Run();
    }
}

运行结果:

桥接模式桥接模式

【小结】

桥接模式,在实际开发中,似乎用得不是特别多。但无论怎么说,也是前人总结出来的一种开发思路。他山之石,可以攻玉。

0 人点赞