设计模式之桥接
书上定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。
考虑如下场景:汽车修理厂,每天都有不同品牌的汽车,出现不同的问题。但是存在共同的目的:被修理。
修理厂里有分工各不同的工程师。负责修理发动机,钣金,等等,但是作用是相同的:修理。
下面把各个品牌的汽车,和各个岗位的工程师 进行抽象与实现的分离。
//先定义工程师的抽象类
class IEngineer
{
public:
virtual void Dofix() = 0;
};
//定义负责修理发动机的工程师
class CEngineer:public IEngineer
{
public:
void Dofix()
{
cout<<"发动机\n"<<endl;
}
};
//定义负责钣金的工程师
class CMetalEngineer:public IEngineer
{
public:
void Dofix()
{
cout<<"钣金\n"<<endl;
}
};
//定义汽车的抽象类
class ICar
{
public:
virtual void BeFixed(IEngineer * p)=0;
};
//奥迪车修理发动机
class CAUDI:public ICar
{
public:
void BeFixed(IEngineer * p)
{
p->Dofix();
}
};
//定义奥拓修理钣金
class CAUTO:public ICar
{
public:
void BeFixed(IEngineer * p)
{
p->Dofix();
}
};
假如来了一辆奥拓 要修理发动机
int main()
{
IEngineer * pEngineer = new CEngineer ;
ICar * pCar = new CAUTO;
pCar ->BeFixed(pEngineer);
delete ICar;
delete IEngineer;
return 0;
}
浙公网安备 33010602011771号