05_设计模式之桥模式

使用动机:

由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个维度的变化。

 

class MessagerImpl
{
public:
	~MessagerImpl() { }

public:
	virtual void PlaySound() = 0;
	virtual void WriteText(string &msg) = 0;
	virtual void Connect() = 0;
};

class Messager
{
public:
	Messager(MessagerImpl *pMessagerImpl) : m_pMessagerImpl(pMessagerImpl) { }
	~Messager() { }

public:
	virtual void Login(string &name, string &pwd) = 0;
	virtual void SendMsg(string &msg) = 0;

protected:
	MessagerImpl *m_pMessagerImpl;
};

// PC平台实现
class PCMessager : public MessagerImpl
{
public:
	virtual void PlaySound() { }
	virtual void WriteText(string &msg) { }
	virtual void Connect() { }
};
// Mob平台实现
class MobMessager : public MessagerImpl
{
public:
	virtual void PlaySound() { }
	virtual void WriteText(string &msg) { }
	virtual void Connect() { }
};

// 业务抽象(精简版)
class PCMessagerLite : public Messager
{
public:
	PCMessagerLite(MessagerImpl *pMessagerImpl) : Messager(pMessagerImpl) { }

public:
	virtual void Login(string &name, string &pwd) 
	{
		m_pMessagerImpl->Connect();
	}

	virtual void SendMsg(string &msg) 
	{ 
		m_pMessagerImpl->WriteText(msg);
	}
	virtual void PlaySound() 
	{
		m_pMessagerImpl->PlaySound();
	}
};
// 业务抽象(专业版)
class PCMessagerPerfect : public Messager
{
public:
	PCMessagerPerfect(MessagerImpl *pMessagerImpl) : Messager(pMessagerImpl) { }

public:
	virtual void Login(string &name, string &pwd)
	{
		m_pMessagerImpl->PlaySound();
		m_pMessagerImpl->Connect();
	}

	virtual void SendMsg(string &msg)
	{
		m_pMessagerImpl->PlaySound();
		m_pMessagerImpl->WriteText(msg);
	}
	virtual void PlaySound()
	{
		m_pMessagerImpl->PlaySound();
	}
};

int main(array<System::String ^> ^args)
{
	MessagerImpl *pMessagerImpl = new PCMessager();
	Messager *pMessager = new PCMessagerLite(pMessagerImpl);
	pMessager = new PCMessagerPerfect(pMessagerImpl);

	pMessagerImpl = new MobMessager();
	pMessager = new PCMessagerLite(pMessagerImpl);
	pMessager = new PCMessagerPerfect(pMessagerImpl);


    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值