1. 程式人生 > >C++dll使用橋接模式提供介面

C++dll使用橋接模式提供介面

C++中的介面:
C++中的介面一般設計為不包含成員變數的抽象類,這樣就只有介面的功能。
介面設計儘量不要涉及到成員變數,介面與實現要儘可能的分離,實現部分改變,不需要重現編譯!

程式碼如下:`

class PERSONDLL_EXPORT PersonApi
{

public:
    static PersonApi*   CreatePersonApi();
    static void DeletePersonApi(PersonApi** ppAPi);

    virtual void SetAge(int nAGe) = 0;
    virtual void SetName(char
* chName) = 0; virtual int GetAge() = 0; virtual char* GetName() = 0; virtual void DoWork() = 0; };

上面是介面部分,實現部分,採取橋接模式,提供一個IMPL類與介面類有一模一樣的方法

通常的做法是另外定義一個新的類,其介面和原來的類一致,但是其資料全部隱藏在新的類中。例如我們定義A類,然後定義一個新類B和其有相同的介面,其資料成員都在新類中。引用A類的程式碼就不需要重新編譯。

PersonApiImpl.h檔案

class PersonImplApi : public PersonApi 
{
public
: PersonImplApi(); virtual ~PersonImplApi(); virtual void SetAge(int nAGe); virtual void SetName(char* chName); virtual int GetAge(); virtual char* GetName(); virtual void DoWork(); private: int m_nAge; std::string m_strName; };

PersonApiImpl.cpp檔案

#include "stdafx.h"
#include "PersonImplApi.h" PersonImplApi::PersonImplApi() { } PersonImplApi::~PersonImplApi() { } PersonApi* PersonApi::CreatePersonApi() { return new PersonImplApi(); } void PersonApi::DeletePersonApi(PersonApi** ppAPi) { if (NULL == ppAPi) { return; } PersonImplApi *pImpl = (PersonImplApi *)*ppAPi; delete pImpl; *ppAPi = NULL; return; } void PersonImplApi::SetAge(int nAGe) { m_nAge = nAGe; } void PersonImplApi::SetName(char * chName) { m_strName = chName; } int PersonImplApi::GetAge() { return m_nAge; } char * PersonImplApi::GetName() { return (char*)m_strName.c_str(); } void PersonImplApi::DoWork() { printf("system start work!\n"); }

在使用的時候 首先呼叫PersonApi::CreatePersonApi(); 返回一個 PersonImplApi指標,具體的介面呼叫使用該指標就可以

相關推薦

C++dll使用模式提供介面

C++中的介面: C++中的介面一般設計為不包含成員變數的抽象類,這樣就只有介面的功能。 介面設計儘量不要涉及到成員變數,介面與實現要儘可能的分離,實現部分改變,不需要重現編譯! 程式碼如下:` class PERSONDLL_EXPORT Person

設計模式C#)——模式

推薦閱讀:  我的CSDN  我的部落格園  QQ群:704621321       在早先,幾乎每個手機的充電器介面都是

C#設計模式之八模式(Bridge)【結構型】

升級 方向 implement 詳細 .cn mage names 這樣的 意圖 一、引言 今天我們要講【結構型】設計模式的第二個模式,該模式是【橋接模式】,也有叫【橋模式】的。大家第一次看到這個名稱會想到什麽呢?我第一次看到這個模式根據名稱猜肯定是連接什麽東西的。因為

c++模式

sin name private tac linux ibm define stream virt 可以簡記為pointer to implement:”指向實現的指針”。 [DP]書上定義:將抽象部分與它的實現部分分離,使它們都可以獨立地變化。考慮裝操作系統,有多種配置

C#設計模式——模式

clas 有一個 == air RR 然而 復雜度 靈活 兩個 一、橋接模式介紹: 橋接模式即將抽象部分與實現部分脫耦,實現抽象化與實現化的解耦,使它們相互獨立互不影響到對方,使它們可以獨立變化。 二、使用場景: 如果一個系統需要在構件的抽象化角色和具體化角色之間添加更多

C#設計模式系列:模式(Bridge)

span -i 原來 派生 引用 分享圖片 on() 版本 nta 1.1定義 當一個抽象可能有多個實現時,通常用繼承來進行協調。抽象類定義對該抽象的接口,而具體的子類則用不同的方式加以實現。繼承機制將抽象部分與它的實現部分固定在一起,使得難以對抽象部分和實現部分獨立地進行

C++設計模式模式

#ifndef __BRIDGE_H__ #define __BRIDGE_H__ #include <iostream> // 橋接模式 : 將抽象部分與實現部分分離,使它們都可以獨立

c++ 模式

作用:將抽象部份與它的實現部份分離,使它們都可以獨立地變化。 將抽象(Abstraction)與實現(Implementation)分離,使得二者可以獨立地變化。 橋接模式號稱設計模式中最難理解的模式之一,關鍵就是這個抽象和實現的分離非常讓人奇怪,大部分人剛看到這個定義的

設計模式與XML(三)組合模式模式和介面卡模式(C++)

一、實驗目的及要求 1、掌握結構型模式的概念。 2、掌握介面卡模式、橋接模式、組合模式、裝飾器模式、外觀模式、享元模式、代理模式的構造方式及使用情景。 二、實驗裝置(環境) 1、   軟體需求: Dev-Cpp5.4, Rat

C#設計模式-模式

using System; using System.Collections.Generic; namespace TestCS { class Program { static void Main(string[] args) {

不同品牌電腦和不同種類介面搭配(模式

問題 聯想、戴爾等品牌電腦,搭配USB介面實現各種功能,隨著技術突破,可能不支援USB介面了,比如支援新的USB type C介面等 解決方案 橋接模式 UML類圖 原始碼 package task2; public interface Adapter {

通過例子學設計模式之--模式以及使用場景說明(C++實現)

             橋是一種結構。橋接模式的類圖和橋很像,是一種結構型的設計模式。             通常情況下,橋兩邊各有一個橋墩,每個橋墩我們可以理解為一個抽象類,或者是一個變化。中間的橋樑我們可以理解為類的“關聯”,這個關聯就是聚合。這樣就組成了橋接模式。

07:模式——C++實現

目錄 一、介紹 二、應用場景 三、要點 四、樣例 五、優缺點 六、和介面卡模式異同  一、介紹  橋接(Bridge)是用於把抽象化與實現化解耦,使得二者可以獨立變化。這種型別的設計模式屬於結構型模式,它通過提供抽象化和實現化之間的橋接結構

C++設計模式模式

//橋接模式,合成,聚合複用原則 #include<iostream> using namespace std; class Soft { public: virtual void run() = 0; }; class Notepad

C#設計模式07-模式

橋接模式,從字面意思上說就是用一條橋樑來連結兩個不同的事物。專業一點講,就是當一個類存在獨立變化的兩個維度的時候,可以將這兩個維度分離出,設計成獨立的繼承結構,使他們可以獨立擴充套件。橋接模式用一種巧妙的方式(用抽象關聯代替傳統的多重繼承)解決了多重繼承存在的問題。 假如說

《大話設計模式》讀書筆記之C++實現--chapter22模式

橋接模式的核心在於理解好繼承屬於is-a的關係,當我們使用繼承的時候先要在心裡問自己一遍子類是不是一個父類,如果答案是否,那我們就要考慮如何重新定義父類實現更好的抽象,此時我們可以聯想到合成/聚合關係,

模式c++實現)

# 橋接模式 [TOC] ## 模式定義 **橋接模式(Bridge),**將抽象部分與它的實現部分分離,使他們都可以獨立的變化。**什麼叫抽象與他的實現分離,這並不是說讓抽象類與其派生類分離,因為這沒有任何意義。實現指的是抽象類和它的派生類用來實現自己的物件。** ## 模式動機 * 解決繼承帶來

C#設計模式-模式(Bridge Pattern)

引言 例如我有好幾個專案,需要外包出去做各種型別的測試,不同的公司基礎費用不同,不同的測試型別價格也是不同的。此時不同的專案選擇不同的公司和不同型別的測試進行測試價格都是不同的。於是我們可以建立一個專案抽象類,一個公司抽象類,一個測試型別抽象類,然後實現各自的具體類,不同的專案使用不同的公司和測試型別,進行測

設計模式模式優秀的程序結構(十五)

維度 邏輯 抽象 工作 多個 lan 能夠 十分 實現 咱不要多, 就一個隱身技能, 嘿嘿嘿 定義 橋接模式(bridge): 在軟件系統中, 某些由於自身的邏輯, 它具有兩個或多個維度的變化, 那麽如何應對這種"多維度的變化"? 如何利用面向對象的技術來使得該類型能夠輕

設計模式模式

可能 定義 優點 代碼實現 等等 復用 使用 擴展 就會 用的並不是特別多,但是熟悉這個模式對於理解面向對象的設計原則,包括“開-閉”原則以及組合/聚合復用原則都很有幫助。 理解好這兩個原則,有助於形成正確的設計思想和培養良好的設計風格。 如果子類的擴展有兩個維度,這時