桥接模式是一种结构型设计模式,它将对象的接口(抽象部分)与实现(实现部分)分离,从而使它们能够独立地变化。这种模式通常使用接口和抽象类来实现这种分离。通过这种方式,对象的抽象部分不必了解其实现部分的细节。
下面是一个使用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();
}
}
运行结果:
【小结】
桥接模式,在实际开发中,似乎用得不是特别多。但无论怎么说,也是前人总结出来的一种开发思路。他山之石,可以攻玉。