// Bridge.cpp : 定义控制台应用程序的入口点。
//
//桥接模式
//---------------------------------------------------------------------------------
//将抽象部分与它的实现部分分离,使它们都可以独立地变化。
//考虑装操作系统,有多种配置的计算机,同样也有多款操作系统。
//如何运用桥接模式呢?可以将操作系统和计算机分别抽象出来,让它们各自发展,减少它们的耦合度。
//----------------------------------------------------------------------------------
//=================================================================================
// OS <-----------------------------> Computer |
// | | |
// | | |
// _________|_________ ___________|__________ |
// | | | | | | |
// Windows Linux Unix Apple Dell HP |
// |
//=================================================================================
#include "stdafx.h"
//抽象类:操作系统
class OS
{
public:
OS(){};
virtual ~OS(){};
virtual void InstallOS_Imp() {}
};
//具体类
class WindowOS: public OS
{
public:
WindowOS(){printf("Create Windows OS\n");}
~WindowOS(){printf("Delete Windows OS\n");}
void InstallOS_Imp()
{
printf("Install Window OS\n");
}
};
//具体类
class LinuxOS: public OS
{
public:
LinuxOS(){printf("Create Linux OS\n");}
~LinuxOS(){printf("Delete Linux OS\n");}
void InstallOS_Imp()
{
printf("Install Linux OS\n");
}
};
class UnixOS: public OS
{
public:
UnixOS(){printf("Create Unix OS\n");}
~UnixOS(){printf("Delete Unix OS\n");}
void InstallOS_Imp()
{
printf("Install Unix OS\n");
}
};
//抽象类:计算机
class Computer
{
public:
Computer(){};
virtual ~Computer(){};
virtual void InstallOS(OS *os){}
};
class DellComputer: public Computer
{
public:
DellComputer(){printf("Create Dell Computer\n");}
~DellComputer(){printf("Delete Dell Computer\n");}
void InstallOS(OS *os)
{
os->InstallOS_Imp();
}
};
class AppleComputer: public Computer
{
public:
AppleComputer(){printf("Create Apple Computer\n");}
~AppleComputer(){printf("Delete Apple Computer\n");}
void InstallOS(OS *os)
{
os->InstallOS_Imp();
}
};
class HPComputer: public Computer
{
public:
HPComputer(){printf("Create HP Computer\n");}
~HPComputer(){printf("Delete HP Computer\n");}
void InstallOS(OS *os)
{
os->InstallOS_Imp();
}
};
int _tmain(int argc, _TCHAR* argv[])
{
printf("设计模式---桥接模式\n");
OS *os_win = new WindowOS();
OS *os_lin = new LinuxOS();
Computer *computer_mac = new AppleComputer();
computer_mac->InstallOS(os_win);
computer_mac->InstallOS(os_win);
delete os_win;
delete os_lin;
delete computer_mac;
getchar();
return 0;
}
[设计模式]桥接模式
最新推荐文章于 2024-07-20 09:08:34 发布