赞
踩
桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分与具体实现部分分离,使它们可以独立地变化。这种设计模式通过创建一个连接(桥)来将抽象和实现部分分离,从而允许它们独立地进行扩展和变化。桥接模式的主要目标是解耦抽象部分(如类或对象)和实现部分(如具体类或对象),使得它们可以分别进行扩展或修改,而不会相互影响。
桥接模式主要包含以下四个角色:
using System;
// 实现化角色接口
namespace BridgePatternDemo
{
public interface IDrawAPI
{
void DrawCircle(int radius, int x, int y);
}
// 具体实现化角色1
public class RedCircle : IDrawAPI
{
public void DrawCircle(int radius, int x, int y)
{
Console.WriteLine($"Drawing Circle[color: red, radius: {radius}, x: {x}, y: {y}]");
}
}
// 具体实现化角色2
public class GreenCircle : IDrawAPI
{
public void DrawCircle(int radius, int x, int y)
{
Console.WriteLine($"Drawing Circle[color: green, radius: {radius}, x: {x}, y: {y}]");
}
}
// 抽象化角色
public abstract class Shape
{
protected IDrawAPI drawAPI;
protected Shape(IDrawAPI drawAPI)
{
this.drawAPI = drawAPI;
}
public abstract void Draw();
}
// 扩展抽象化角色
public class Circle : Shape
{
private int x, y, radius;
public Circle(int x, int y, int radius, IDrawAPI drawAPI) : base(drawAPI)
{
this.x = x;
this.y = y;
this.radius = radius;
}
public override void Draw()
{
drawAPI.DrawCircle(radius, x, y);
}
}
}
// 客户端代码
class Program
{
static void Main(string[] args)
{
// 创建具体实现化对象
IDrawAPI redCircleAPI = new RedCircle();
IDrawAPI greenCircleAPI = new GreenCircle();
// 创建扩展抽象化对象,并注入具体实现化对象
Shape redCircle = new Circle(100, 100, 10, redCircleAPI);
Shape greenCircle = new Circle(100, 100, 10, greenCircleAPI);
// 调用方法,展示结果
redCircle.Draw();
greenCircle.Draw();
Console.ReadLine();
}
}
在这个示例中,IDrawAPI
接口及其两个具体实现 RedCircle
和 GreenCircle
构成了实现化角色的部分。Shape
抽象类和 Circle
类则构成了抽象化角色和扩展抽象化角色的部分。客户端代码(位于 Program
类中)展示了如何使用这些角色来创建和绘制不同颜色的圆形。
通过桥接模式,我们可以轻松地在不修改 Circle
类或 Shape
抽象类的情况下,添加新的颜色或绘制方法,只需实现新的 IDrawAPI
接口即可。这增加了系统的灵活性和可扩展性。
桥接模式通过将抽象部分与实现部分分离,提高了系统的灵活性和可扩展性。在实际开发中,当遇到需要在两个独立变化的维度上进行扩展时,可以考虑使用桥接模式。希望本文能帮助你更好地理解和应用C#中的桥接模式。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。