zoukankan      html  css  js  c++  java
  • CSharp设计模式读书笔记(8):桥接模式(学习难度:★★★☆☆,使用频率:★★★☆☆)

    桥接模式(Bridge Pattern):

    将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。

    模式角色与结构:

     示例代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace CSharp.DesignPattern.BridgePattern
    {
        class Program
        {
            static void Main(string[] args)
            {
                Image image = new JPGImage();
                ImageImp imp = new WindowsImp();
    
                image.SetImageImp(imp);
                image.ParseFile("c:\txt");
    
                Console.ReadLine();
            }
    
            //像素矩阵类:辅助类,各种格式的文件最终都被转化为像素矩阵,不同的操作系统提供不同的方式显示像素矩阵  
            class Matrix
            {
                //此处代码省略  
            }
    
            //抽象图像类:抽象类 
            abstract class Image
            {
                protected ImageImp imp;
    
                public void SetImageImp(ImageImp imp)
                {
                    this.imp = imp;
                }
    
                public abstract void ParseFile(String fileName);
            }
    
            //JPG格式图像:扩充抽象类  
            class JPGImage : Image {
                public override void ParseFile(String fileName)
                {  
                    //模拟解析JPG文件并获得一个像素矩阵对象m;  
                    Matrix m = new Matrix();   
                    imp.DoPaint(m);  
                    Console.WriteLine(fileName + ",格式为JPG。");  
                }  
            }
    
            //PNG格式图像:扩充抽象类  
            class PNGImage : Image
            {
                public override void ParseFile(String fileName)
                {
                    //模拟解析PNG文件并获得一个像素矩阵对象m;  
                    Matrix m = new Matrix();
                    imp.DoPaint(m);
                    Console.WriteLine(fileName + ",格式为PNG。");
                }
            }
    
            //BMP格式图像:扩充抽象类   
            class BMPImage : Image
            {
                public override void ParseFile(String fileName)
                {
                    //模拟解析BMP文件并获得一个像素矩阵对象m;  
                    Matrix m = new Matrix();
                    imp.DoPaint(m);
                    Console.WriteLine(fileName + ",格式为BMP。");
                }
            }
    
            //GIF格式图像:扩充抽象类
            class GIFImage : Image
            {
                public override void ParseFile(String fileName)
                {
                    //模拟解析GIF文件并获得一个像素矩阵对象m;  
                    Matrix m = new Matrix();
                    imp.DoPaint(m);
                    Console.WriteLine(fileName + ",格式为GIF。");
                }
            }
    
            //抽象操作系统实现类:实现类接口 
            interface ImageImp
            {
                void DoPaint(Matrix m);
            }
    
            //Windows操作系统实现类:具体实现类 
            class WindowsImp : ImageImp
            {
                public void DoPaint(Matrix m)
                {
                    //调用Windows系统的绘制函数绘制像素矩阵  
                    Console.WriteLine("在Windows操作系统中显示图像:");
                }
            }
    
            //Linux操作系统实现类:具体实现类 
            class LinuxImp : ImageImp
            {
                public void DoPaint(Matrix m)
                {
                    //调用Linux系统的绘制函数绘制像素矩阵  
                    Console.WriteLine("在Linux操作系统中显示图像:");
                }
            }
    
            //Unix操作系统实现类:具体实现类 
            class UnixImp : ImageImp
            {
                public void DoPaint(Matrix m)
                {
                    //调用Unix系统的绘制函数绘制像素矩阵  
                    Console.WriteLine("在Unix操作系统中显示图像:");
                }
            }
        }
    }
  • 相关阅读:
    插入排序(二)
    选择排序(一)
    (转)示例化讲解RIP路由更新机制
    Css元素居中设置
    (转)盒子概念和DiV布局
    (转)浅析CSS——元素重叠及position定位的z-index顺序
    (转)Java中的static关键字解析
    (转)字符串循环移位
    linux把某个文件拷贝到不同的目录下面
    linux中查找文件并合并文件
  • 原文地址:https://www.cnblogs.com/thlzhf/p/3993345.html
Copyright © 2011-2022 走看看