![]() |
1
1
我建议你 不 要从包含如下公共代码的基类继承特定的消息处理类:
这种方法的可重用性很差:例如,如果您想要处理某种需要从一个新的和一个CNL执行操作的消息,那么您将很快得到多个继承。 相反,我会选择一个包含公共代码的类,它调用接口来定制公共代码。像这样:
handlerContainer类可用于将其他处理程序的行为分组在一起。 如果我没弄错的话,这个模式叫做“复合”。为了创建正确的处理程序实例,您当然需要某种工厂。 祝你好运! |
![]() |
2
0
那 做 听起来像一个有趣的挑战。-)
您的“初始计划”听起来是一个不错的计划:排除所有消息之间所有类似的处理,并将它们的代码放在基本消息类中。更改项可以成为虚拟功能(例如
对于这样的设计问题,很难给出一般性的建议。在我看来,您的主解析器函数与工厂方法模式相对应,但这是唯一一个我可以轻松识别的。(我对设计模式的名称并不太熟悉——我使用了许多模式,但我只知道它们 有 几年前的名字。) |
![]() |
3
0
你可能已经意识到了,但以防万一…你应该去取/借 Gang of Four design patterns book 以帮助识别和应用适当的模式。这是规范引用,它包含交叉引用和表,以帮助您决定哪些模式适合您的应用程序。对于这里的人们来说,仅仅根据描述就很难确定可能对您有帮助的特定模式。 |
![]() |
4
0
例如,我建议查看Boost提供的库
一旦知道了消息类型,就可以使用适当的元组和将第一个元组类型应用于数据的函数模板。然后是元组中的下一个条目,依此类推。 这确实假定您的数据流的布局在编译时是已知的,但是它的优点是您没有为数据结构支付任何运行时开销。 |
![]() |
Schadre · C-plus编码错误 2 年前 |
![]() |
Nithin K · 即使类属性的类型正确,也会获取异常 2 年前 |
![]() |
amirreza870 · Python OOP-更改类文本 2 年前 |
![]() |
A_K · 使用cat或打印方法打印部分内容的子集闭包 2 年前 |
![]() |
Mo Fatah · 如何使用Python类打印数独板? 2 年前 |