您的位置:首页 > 其它

23种设计模式之桥接模式(Bridge)

2017-04-10 15:43 316 查看
桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。桥接模式类似于多重继承方案,但是多重继承方案往往违背了类得单一职责原则,其复用性比较差,桥接模式是比多重继承方案更好的解决方法。

优点:

1)可以将接口与实现相分离。

2)提高了可扩展性。

3)对客户端隐藏了实现的细节。

使用场景:

1)想避免在抽象及其实现之间存在永久的绑定。

2)抽象及其实现可以使用子类进行扩展。

3)抽象的实现被改动应该对客户端没有影响,不用重新编译代码。



Bridge 模式

/// <summary>
/// 像素矩阵类
/// </summary>
public class Matrix
{

}

public abstract class Image
{
public void SetImp(ImageImp imp)
{
this.imp = imp;
}

public abstract void ParseFile(string fileName);
protected ImageImp imp;
}

public abstract class ImageImp
{
public abstract void doPaint(Matrix m);//显示像素矩阵m
}


public class WinImp:ImageImp
{
public override void doPaint(Matrix m)
{
//调用windows系统的绘制函数绘制像素矩阵
}
}

public class LinuxImp:ImageImp
{
public override void doPaint(Matrix m)
{
//调用Linux系统的绘制函数绘制像素矩阵
}
}


public class JPEG:Image
{
public override void ParseFile(string fileName)
{
Matrix m = new Matrix();//此处解析BMP文件并获得一个像素矩阵对象m
imp.doPaint(m);
}
}

public class BMP : Image
{
public override void ParseFile(string fileName)
{
Matrix m = new Matrix();//此处解析BMP文件并获得一个像素矩阵对象m
imp.doPaint(m);
}
}

public class GIF:Image
{
public override void ParseFile(string fileName)
{
Matrix m = new Matrix();//此处解析BMP文件并获得一个像素矩阵对象m
imp.doPaint(m);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: