【发布时间】:2014-08-01 00:34:21
【问题描述】:
在我的一个项目中,我在几个地方使用了以下模式:我有一个类 A 有一堆方法,类 B 是用指向 @987654323 的某个实例的指针构造的@,只为用户(不是A 实例的所有者)导出这些方法的子集。
class A
{
public:
void doStuff();
void doOtherStuff();
void doYetOtherStuff();
B getB()
{
return B(this);
}
};
class B
{
friend class A;
public:
void doStuff()
{
_a->doStuff();
}
void doOtherStuff()
{
_a->doOtherStuff();
}
private:
B(A* a) : _a(a) {}
A* _a;
};
例如,A 的实例可以由我的库创建,B 的创建实例(与A 相关联)可以传递给插件,该插件仍然可以访问 @ 987654329@ 实例,尽管方式有限。
我只是对B 的设计模式名称感到困惑:它是外观、桥梁、适配器还是代理?还是别的什么?
【问题讨论】:
-
是
Proxy设计模式 -
为什么要动态分配?为什么不简单地
B getB() { return B(this); }? -
@FredOverflow:已编辑(实际用例如果不完全一样,但是是的,这种动态分配在这里没用)。
-
FACADE 但它并没有简化任何事情。它和原来的类一样好。
-
它可以是任何东西,因为它没有做太多事情,也没有实现“接口”。
标签: c++ design-patterns proxy-classes facade bridge