|
4
|
| recipriversexclusion · 技术社区 · 15 年前 |
|
|
1
6
在一种方法中,允许客户端注册回调,然后messageconsumer调用注册的回调。这类似于观察者/广播设计模式。 第二种方法是策略设计模式,客户机必须继承和重写messageconsumer。 基本设计目标建议使用最弱的关系来促进松耦合。因为与简单的关联相比,内在性是一个更强大的关系,所以所有其他的方法都是相同的1是首选的。
但正如詹姆斯指出的,除非清楚地知道总体设计限制,否则很难对其进行评论。 |
|
|
2
1
继承将使您的库更加面向对象,并可能提高可读性。但实际上,选择是相同的,因为编译器将检查用户是否提供了函数(假设您在基类中声明了纯虚拟处理程序),并且底层机制将通过指针(继承情况下的虚拟表)来完成。 |
|
|
3
1
纯虚拟函数允许编译器检查客户端代码是否实现了处理程序。在构造对象之后,虚拟调度立即处于活动状态,并且查看派生类的人可以准确地解释其处理。处理所需的数据可以方便而清晰地分组到派生类中。工厂仍然可以选择要实例化的特定派生类。 函数指针是运行时状态,因此需要更加小心地及时初始化它们,以便对它们的设置和错误处理进行可选的运行时检查,并解释在程序执行期间哪个集有效。因此,在物体的生命周期内,有更多的自由来改变它们。 第三种选择是模板策略类,或者奇怪的循环模板模式,在编译时锁定行为。这可能允许回调、死代码消除和其他优化的内联。 |
|
|
4
0
虚函数或逐级函数是实现的方法。这些方法比函数指针方法提供更大的灵活性和更松散的耦合。 为了说明-函数指针方法可以和前两个方法包装在一起,但不能与前两个方法包装在一起。
|
|
|
Denyk · ZeroMQ操作抛出EXC:[当前状态下无法完成操作] 8 年前 |
|
|
Shubham Mishra · 执行多个芹菜工人以使用唯一队列 8 年前 |
|
|
Tensho · 如何在RabbitMQ中发布数据库之间的数据更改? 8 年前 |
|
|
George · MDB部署成功:然后甚至不会写入系统。出来为什么? 8 年前 |
|
|
Nayeem · 使用JMS中的CCDT文件连接到IBM MQ 8 年前 |