一种接口定义方法

前段时间开发项目用到了librdkafka库,学习了其中的部分源码。感觉代码中的接口设计方式挺好的,简单做个笔记,加深印象,以后可以模仿使用。

接口部分:

1
2
3
4
5
6
7
8
class A {
public:
static A* Create() {
return new AImpl;
}
virtual void Function1() = 0;
virtual void Function2() = 0;
}

实现部分

1
2
3
4
5
6
7
8
class AImpl : public A {
virtual void Function1() {
;
}
virtual void Function2() {
;
}
}

这样写可以将具体的实现部分隐藏起来,仅向用户暴露接口。这好像也是工厂模式,在Create中传入不同参数,获取不同的实现对象。