小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C++dll使用橋接模式提供接口

 牛人的尾巴 2018-09-13

C++中的接口一般設(shè)計(jì)為不包含成員變量的抽象類,這樣就只有接口的功能。
接口設(shè)計(jì)盡量不要涉及到成員變量,接口與實(shí)現(xiàn)要盡可能的分離,實(shí)現(xiàn)部分改變,不需要重現(xiàn)編譯!

代碼如下:`

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;
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

上面是接口部分,實(shí)現(xiàn)部分,采取橋接模式,提供一個(gè)IMPL類與接口類有一模一樣的方法

通常的做法是另外定義一個(gè)新的類,其接口和原來的類一致,但是其數(shù)據(jù)全部隱藏在新的類中。例如我們定義A類,然后定義一個(gè)新類B和其有相同的接口,其數(shù)據(jù)成員都在新類中。引用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;
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

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");
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多