#pragma once
#ifndef BRIDEG_H
#define BRIDEG_H
class Implementor;
// 维护一个Implementor 类的指针
class Abstraction
{
public:
Abstraction(Implementor* pImplementor);
virtual ~Abstraction();
void Operation();
protected:
Implementor* m_pImplementor;
};
// 为实现Abstraction 定义的抽象基类,定义了实现的接口函数
class Implementor
{
public:
Implementor(){}
virtual ~Implementor(){}
virtual void OperationImpl() = 0;
};
// 继承自Implementor,是Implementor 的不同实现之一
class ConcreateImplementorA : public Implementor
{
public:
ConcreateImplementorA(){}
virtual ~ConcreateImplementorA(){}
virtual void OperationImpl();
};
// 继承自Implementor,是Implementor 的不同实现之一
class ConcreateImplementorB : public Implementor
{
public:
ConcreateImplementorB(){}
virtual ~ConcreateImplementorB(){}
virtual void OperationImpl();
};
#endif
#include "StdAfx.h"
#include "bridge_impl.h"
#include "bridge_impl.h"
#include
void ConcreateImplementorA::OperationImpl()
{
std::cout */
/* --> media_link_impl::create_link(new tcp,new udp,new rtsp) (传入不同对象指针)*/
/* --> tcp_link_impl::create_link,udp_link_impl::create_link,--- */
/* --- rtsp_link_impl::create_link (不同具体实现) */
/************************************************************************/
ConcreateImplementorA *pImplA = new ConcreateImplementorA();
Abstraction *pAbstraction1 = new Abstraction(pImplA);
pAbstraction1->Operation();
delete pAbstraction1;
ConcreateImplementorB *pImplB = new ConcreateImplementorB();
Abstraction *pAbstraction2 = new Abstraction(pImplB);
pAbstraction2->Operation();
delete pAbstraction2;
system("pause");
return 0;
}