c语言重构,c – 重构switch语句的设计模式

本文探讨了一种常见的代码重构场景,即如何改进使用switch语句处理多态消息类型的问题。作者提到已经考虑了Command模式,但不确定是否适合。文章询问是否应使用工厂模式、抽象工厂模式或是双重调度,寻求最佳实践建议。同时,文章指出重构的目标是提高代码的可维护性和可扩展性。
摘要由CSDN通过智能技术生成

我在标题中有类似的内容

class MsgBase

{

public:

unsigned int getMsgType() const { return type_; }

...

private:

enum Types { MSG_DERIVED_1,MSG_DERIVED_2,... MSG_DERIVED_N };

unsigned int type_;

...

};

class MsgDerived1 : public MsgBase { ... };

class MsgDerived2 : public MsgBase { ... };

...

class MsgDerivedN : public MsgBase { ... };

并用作

MsgBase msgHeader;

// peeks into the input stream to grab the

// base class that has the derived message type

// non-destructively

inputStream.deserializePeek( msgHeader );

unsigned int msgType = msgHeader.getMsgType();

MsgDerived1 msgDerived1;

MsgDerived2 msgDerived2;

...

MsgDerivedN msgDerivedN;

switch( msgType )

{

case MSG_DERIVED_1:

// fills out msgDerived1 from the inputStream

// destructively

inputStream.deserialize( msgDerived1 );

/* do MsgDerived1 processing */

break;

case MSG_DERIVED_2:

inputStream.deserialize( msgDerived2 );

/* do MsgDerived1 processing */

break;

...

case MSG_DERIVED_N:

inputStream.deserialize( msgDerivedN );

/* do MsgDerived1 processing */

break;

}

这似乎是一种相当普遍并且非常适合重构的情况.应用设计模式(或基本C语言功能重新设计)来重构此代码的最佳方法是什么?

我已经读过Command模式通常用于重构switch语句,但这似乎只适用于在执行任务的算法之间进行选择.这是工厂或抽象工厂模式适用的地方(我不是很熟悉)?双重派遣?

我试图忽略尽可能多的无关紧要的背景,但如果我错过了重要的事情,请告诉我,我会编辑包含它.此外,我找不到任何类似的东西,但如果这是重复只是重定向到适当的SO问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值