CSharp设计模式读书笔记(8):桥接模式(学习难度:★★★☆☆,使用频率:★★★☆☆)

桥接模式(Bridge Pattern):

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

模式角色与结构:

CSharp设计模式读书笔记(8):桥接模式(学习难度:★★★☆☆,使用频率:★★★☆☆)

CSharp设计模式读书笔记(8):桥接模式(学习难度:★★★☆☆,使用频率:★★★☆☆)

示例代码:

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操作系统中显示图像:");
}
}
}
}
上一篇:WuKong


下一篇:java中垃圾回收机制中的引用计数法和可达性分析法(最详细)