A:定义好抽象的接口类。
B:对于不同的情况不同实现。但是实现是要求和模板的定义的相同。
2桥接模式的作用:说白了就是定义类模板,然后实现。
3桥接模式具体描述
//桥接模式:将抽象化与实现化脱耦,使得二者可以独立的变化
//也就是说将他们之间的强关联变成弱关联
//也就是指在一个软件系统的抽象化和实现化之间使用组合
//聚合关系而不是继承关系,从而使两者可以独立的变化。
//早上碰到MM,要说早上好,晚上碰到MM,要说晚上好。
//碰到MM穿了新衣服,要说你的衣服好漂亮哦,碰到MM做新的发型,要说
//你的头发好漂亮哦。不要问我"早上碰到MM新做了个发型怎么说"
//这种问题,自己用GRIDGE组好一下不就行了。
4桥接模式类图
5.代码:
#include<iostream>
#include<string>
usingnamespacestd;
//桥接模式:将抽象化与实现化脱耦,使得二者可以独立的变化
//也就是说将他们之间的强关联变成弱关联
//也就是指在一个软件系统的抽象化和实现化之间使用组合
//聚合关系而不是继承关系,从而使两者可以独立的变化。
//早上碰到MM,要说早上好,晚上碰到MM,要说晚上好。
//碰到MM穿了新衣服,要说你的衣服好漂亮哦,碰到MM做新的发型,要说
//你的头发好漂亮哦。不要问我"早上碰到MM新做了个发型怎么说"
//这种问题,自己用GRIDGE组好一下不就行了。
classHandsetSoft
{
public:
virtualvoidrun() = 0;
};
classHandsetGame :publicHandsetSoft
{
public:
voidrun()
{
cout <<"运行手机游戏" << endl;
}
};
classHandsetAddressList :publicHandsetSoft
{
public:
voidrun()
{
cout <<"运行手机通讯录" << endl;
}
};
classHandsetBrand
{
protected:
HandsetSoft *soft;
public:
voidsetHandsetSoft(HandsetSoft *soft)
{
this->soft = soft;
}
virtualvoidrun() = 0;
};
classHandsetBrandN :publicHandsetBrand
{
public:
voidrun()
{
soft->run();
}
};
classHandsetBrandM :publicHandsetBrand
{
public:
voidrun()
{
soft->run();
}
};
intmain()
{
HandsetBrand *hb;
hb =newHandsetBrandM();
hb->setHandsetSoft(newHandsetGame());
hb->run();
hb->setHandsetSoft(newHandsetAddressList());
hb->run();
cin.get();
return 0;
}
运行结果如下: