设计模式-结构型-桥接
来源:互联网 发布:笔记本网络初始化失败 编辑:程序博客网 时间:2024/05/23 19:10
#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 <iostream> void ConcreateImplementorA::OperationImpl() { std::cout << "Implementation by ConcreateImplementorA\n"; } void ConcreateImplementorB::OperationImpl() { std::cout << "Implementation by ConcreateImplementorB\n"; } Abstraction::Abstraction(Implementor* pImplementor) : m_pImplementor(pImplementor) { } Abstraction::~Abstraction() { delete m_pImplementor; m_pImplementor = NULL; } void Abstraction::Operation() { m_pImplementor->OperationImpl(); }
// Bridge.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "bridge_impl.h"#include <stdlib.h>#include <stdio.h>//将抽象部分与它的实现部分分离,使它们都可以独立地变化int _tmain(int argc, _TCHAR* argv[]){/************************************************************************//* media_link::create_link(link_type) (提供抽象接口)--> *//* --> 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;}
阅读全文
0 0
- 设计模式-结构型-桥接
- 设计模式-结构型模式-桥接
- 设计模式---结构型
- 结构型设计模式
- 结构型设计模式
- 设计模式-结构型
- 设计模式-----结构型
- 结构型设计模式
- 结构型设计模式
- 结构型设计模式
- 结构型设计模式
- 设计模式-结构型
- 结构型设计模式
- 设计模式---结构型
- 设计模式:结构型
- 结构型设计模式
- 结构型设计模式
- 设计模式--结构型
- 大顶堆
- HTML常用标签
- 刷屏器
- 常用前台系统获取后台系统数据方案
- 全栈者角度的前端整理
- 设计模式-结构型-桥接
- Codeforces 869 C. The Intriguing Obsession (组合数学)
- Django视图 view
- 第九章 浮动
- JZOJsenior1738.Heatwave
- 传返回值给CrimeListFragment+修改列表项
- 134. Gas Station
- map用法
- Linux查找命令小结