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!");
}
}
}