zoukankan      html  css  js  c++  java
  • 23种设计模式之桥接模式(Bridge)

    桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(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);  
        }  
    }  
  • 相关阅读:
    快乐的深圳之旅
    编码和字体[zz]
    USB转串口芯片几点总结有疑问
    ANSI/UTF8/UCS2(UTF16),以及回车换行[zz]
    详细介绍四线电阻触摸屏的工作原理[zz]
    无字库12864液晶的驱动方法[zz]
    字符集和字符编码(Charset & Encoding)[zz]
    搭建CodeBlocks+wxWidgets可视化编程环境(Windows)
    wxWidgets初始化分析应用定义和初始化
    开发CodeBlocks插件(1)入门篇
  • 原文地址:https://www.cnblogs.com/guwei4037/p/6689348.html
Copyright © 2011-2022 走看看