桥接模式
定义:把抽象部分和它的实现部分分离,使得它们都可以独立的变化
栗子场景:华山派和崆峒派先后获得了武林秘籍辟邪剑谱和九阴真经,于是开始苦练此功..
UML类图

代码:
#include<iostream>
using namespace std;
class Sects;
//功夫
class Kungfu
{
public:
virtual void practice() = 0;
};
//九阴真经
class JiuyinZj :public Kungfu
{
public:
virtual void practice()
{
cout << "@九阴真经。注:玄门内功,至阴至柔" << endl;
}
};
//辟邪剑谱
class PixieJp :public Kungfu
{
public:
virtual void practice()
{
cout << "@辟邪剑谱,注:欲练此功,必先自宫" << endl;
}
};
//门派
class Sects{
public:
Sects() :m_kungfu(nullptr){}
void setMartialarts(Kungfu* m)
{
this->m_kungfu = m;
}
Kungfu* getKungfu()
{
return m_kungfu;
}
virtual void practice() = 0;
private:
Kungfu *m_kungfu; //桥接
};
//华山
class HuaShan :public Sects
{
public:
void practice()
{
getKungfu()->practice();
}
};
//崆峒
class KongTong :public Sects
{
public:
void practice()
{
getKungfu()->practice();
}
};
//客户端
int main()
{
Sects *sects = new HuaShan;
cout << "华山派弟子正在练习:" << endl;
sects->setMartialarts(new JiuyinZj);
sects->practice();
sects->setMartialarts(new PixieJp);
sects->practice();
sects = new KongTong;
cout << "崆峒派弟子正在练习:" << endl;
sects->setMartialarts(new JiuyinZj);
sects->practice();
sects->setMartialarts(new PixieJp);
sects->practice();
if (sects)
{
delete sects;
sects = nullptr;
}
return 0;
}
效果:

本文通过武侠故事背景,详细解析了桥接模式的概念及其应用。桥接模式将抽象部分与实现部分分离,使两者能独立变化,提高代码的灵活性和复用性。文中以华山派与崆峒派修炼不同武功秘籍为例,展示了桥接模式如何在实际编程中实现。通过具体的C++代码示例,读者可以深入理解桥接模式的设计思想。
9034

被折叠的 条评论
为什么被折叠?



