博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用静态函数impl模式做接口
阅读量:5161 次
发布时间:2019-06-13

本文共 881 字,大约阅读时间需要 2 分钟。

使用静态函数impl模式做接口

impl即桥接模式,主要是为了隐藏数据和减少不必要的编译。

普通的impl模式做接口一般是:

A类是接口,B类继承A类,是A类的实现,C类,包含A类和B类的头文件,把B类对象指针,转做为基类指针,给使用者。代码示意如下:

// a.hclass A{ // 接口类 纯虚函数    virtual  void add();};///// b.h#include "a.h"class B:public A{ // 接口实现类    void add();}///#include "a.h"#include "b.h"class C{ // 给使用者的类    A* GetA(){        return new B();    };}/// c.cpp#include "b.h"#include "c.h" // 类c的实现    A* C::GetA(){        return new B();    };}

但是这样,用了三个类(也有是把第三个类用全局函数或全局对象代替),给使用者至少暴露两个类的头文件A和C;

最近有在看webrtc的音频模块时,看到使用静态函数的方法获取实现类对象,感觉很是精巧,对实现的隐藏性更好,也达到了减少文件暴露,使用者只要包含接口文件即可。

// a.hclass A{ // 接口类     static A* GetA(); // 静态函数,在实现类B的cpp文件实现    virtual  void add();};///// b.h#include "a.h"class B:public A{ // 接口实现类    void add();}///// b.cppA* A::GetA(){    return new B();}

调用静态函数getA()就可以获取实现类B的对象,对于使用者,只需要给接口类A的头文件,甚至使用者根本不知道实现类B的存在。

转载于:https://www.cnblogs.com/weiweisuhe/p/6012079.html

你可能感兴趣的文章
js深度克隆对象、数组
查看>>
socket阻塞与非阻塞,同步与异步
查看>>
团队工作第二天
查看>>
System类
查看>>
tableView
查看>>
Happy Great BG-卡精度
查看>>
Xamarin Visual Studio不识别JDK路径
查看>>
菜鸟“抄程序”之道
查看>>
Ubuntu下关闭防火墙
查看>>
TCP/IP 邮件的原理
查看>>
原型设计工具
查看>>
windows下的C++ socket服务器(4)
查看>>
css3 2d转换3d转换以及动画的知识点汇总
查看>>
【Java】使用Eclipse进行远程调试,Linux下开启远程调试
查看>>
对Vue为什么不支持IE8的解释之一
查看>>
计算机改名导致数据库链接的诡异问题
查看>>
Java8内存模型—永久代(PermGen)和元空间(Metaspace)(转)
查看>>
ObjectiveC基础教程(第2版)
查看>>
centos 引导盘
查看>>
Notes of Daily Scrum Meeting(12.8)
查看>>