07.桥接模式
桥接模式
将抽象部分与实现部分分离,使它们都可以独立的变化
- 定义接口和抽象类
namespace 桥接模式
{
// 实现接口
public interface IDraw
{
void DrawCircle(int radius, int x, int y);
}
// 抽象部分 构造时注入接口
public abstract class Shape
{
protected IDraw Draw;
public Shape(IDraw draw)
{
this.Draw = draw;
}
public abstract void draw();
}
}
- 实现接口
namespace 桥接模式
{
public class RedCircle : IDraw
{
public void DrawCircle(int radius, int x, int y)
{
Console.WriteLine("Drawing Circle[ color: red, radius: "
+ radius + ", x: " + x + ", " + y + "]");
}
}
public class GreenCircle : IDraw
{
public void DrawCircle(int radius, int x, int y)
{
Console.WriteLine("Drawing Circle[ color: green, radius: "
+ radius + ", x: " + x + ", " + y + "]");
}
}
}
- 抽象部分的实现
重写抽象部分的实实现
namespace 桥接模式
{
public class Circle : Shape
{
private int x, y, radius;
public Circle(int x, int y, int radius, IDraw draw)
: base(draw)
{
this.x = x;
this.y = y;
this.radius = radius;
}
public override void draw()
{
Draw.DrawCircle(radius, x, y);
}
}
}
- 调用
namespace 桥接模式
{
class Program
{
static void Main(string[] args)
{
Shape redCircle = new Circle(100, 100, 10, new RedCircle());
Shape greenCircle = new Circle(100, 100, 10, new GreenCircle());
redCircle.draw();
greenCircle.draw();
Console.WriteLine("Hello World!");
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现