设计模式-结构型-桥接
生活随笔
收集整理的這篇文章主要介紹了
设计模式-结构型-桥接
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#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; }
#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; }
總結
以上是生活随笔為你收集整理的设计模式-结构型-桥接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式-结构型-适配器
- 下一篇: 设计模式-结构型-组成