站长工具app下载,成都建立网站营销设计,企业网站开发多少钱,网站建设 教学大纲#xff08;19#xff09; 桥接模式 Bridge#xff0c;不是采用类继承#xff0c;而是采用类组合#xff0c;一个类的数据成员是类对象#xff0c;来扩展类的功能。源码如下#xff1a;
class OS // 操作系统负责绘图
{
public:virtual ~OS() {}virtual void draw(cha…19 桥接模式 Bridge不是采用类继承而是采用类组合一个类的数据成员是类对象来扩展类的功能。源码如下
class OS // 操作系统负责绘图
{
public:virtual ~OS() {}virtual void draw(char * ptrCache , int lengthCache) 0 ;
};class OS_Window : public OS
{
public:void draw(char* ptrCache, int lengthCache) { cout windows 下绘图\n\n; }
};class OS_Linux : public OS
{
public:void draw(char* ptrCache, int lengthCache) { cout Linux 下绘图\n\n; }
};class Image // 本基类有成员函数负责解析与加载图片至缓存但绘图调用跟操作系统有关的底层函数
{
protected: OS * ptrOS;
public:virtual ~Image() {}Image(OS* p) : ptrOS(p) {}virtual void parseImage( const char * name) 0;
};class Image_jpg : public Image
{
public:Image_jpg(OS * p) : Image(p){}void parseImage(const char* name){cout 解析 jpg 图片 , ;char c[100]; // 假定分析 jpg 格式后的图片信息统一用 100 字节存储。ptrOS-draw(c , 100);}
};class Image_png : public Image
{
public:Image_png(OS* p) : Image(p) {}void parseImage( const char* name){cout 解析 png 图片 , ;char c[50]; // 假定分析 png 格式后的图片信息统一用 50 字节存储。ptrOS-draw(c, 50);}
};int main()
{OS_Window osWindow;OS_Linux osLinux;Image_jpg jpgA(osLinux) , jpgB(osWindow) ;Image_png pngA(osLinux) , pngB(osWindow) ;jpgA.parseImage(aaa); jpgB.parseImage(b);pngA.parseImage(c);pngB.parseImage(dd);return 0;
}测试结果如下 20
谢谢