bridge模式



/*
桥接模式
多维变化适合用
一维变化继承就行了
*/
class ImpShape
{
public:
ImpShape(void) {};
virtual ~ImpShape(void) {};


public:
virtual void draw()=0;
};




class ImpPdf : public ImpShape
{
public:
ImpPdf(void) {};
~ImpPdf(void) {};


virtual void draw();
};
void ImpPdf::draw()
{
std::cout << "ImpPdf::draw\n";
}
class ImpDoc : public ImpShape
{
public:
ImpDoc(void) {};
~ImpDoc(void) {};


virtual void draw();
};
void ImpDoc::draw()
{
std::cout << "ImpDoc::draw\n";
}




class IShape
{
public:
IShape(void) {};
virtual ~IShape(void) {};


virtual void getName()=0;
void paint();
public:
ImpShape *implementor;


};
void IShape::paint()
{
getName();
implementor->draw();
}


class CRect :public IShape
{
public:
CRect() {};
~CRect() {};


virtual void getName();
};
void CRect::getName()
{
std::cout << "i am rect\n";
}
class CCircle :public IShape
{
public:
CCircle() {};
~CCircle() {};


virtual void getName();
};
void CCircle::getName()
{
std::cout << "i am circle\n";

}


int main()

{

/*
桥接模式
既满足了 画什么图形  shape继承实现shape  抽象的 继承
又实现了 在什么上面画 impdoc imppdf  ===   impshape  实现 不同的实现  不依赖继承 独立的

抽象部分和实现部分分离,使他们都能够独立的变化
解耦抽象和它的实现 以便二者可以独立的变化

既有继承,又有不同继承的组合 组件的组合



CRect* r = new CRect();
r->implementor = new ImpPdf();
r->paint();


CCircle* c = new CCircle();
c->implementor = new ImpDoc();
c->paint();
*/

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值