您当前的位置: 首页 > 

phymat.nico

暂无认证

  • 1浏览

    0关注

    1967博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

设计模式-结构型-桥接

phymat.nico 发布时间:2017-10-07 15:47:39 ,浏览量:1

#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;
}

关注
打赏
1659628745
查看更多评论
立即登录/注册

微信扫码登录

0.1184s