uri*_*ium 5 c# oop design-patterns
我一直在读一本名为Clean Code A Handbook of Agile Software Craftsmanship的书.书中的作者提出应避免使用switch语句,如果无法避免,则应将其降级为工厂方法.我有一个连接对象,它接收各种PDU(协议数据单元).PDU有所不同,可以按任何顺序接收.所以,如果我有一个方法,例如:
public BasePdu ReceiveNext();
Run Code Online (Sandbox Code Playgroud)
因为在完全收到数据包类型之前我无法分辨它是什么.在PDU的标题中是关于它应该是哪种类型的标识符.这意味着调用方法将弄清楚PDU的类型是什么,并基于该调用处理它的相关方法.这听起来像是switch语句的完美示例.包含连接的对象我希望有两个线程.一个用于接收PDU,另一个用于服务要发送的PDU队列.
现在我知道你不能遵循一切好的建议,而且只有一些情况是规则的例外.这是其中之一吗?或者有一种解决方法,我还没有想到.
更新:
我通过创建响应处理程序的子类来听到很多人在说什么.问题是包含对象有很多上下文和处理程序需要的附加信息,例如查找和限制等等.将所有这些信息注入处理程序的子类中将是一项非常繁琐的维护工作,并且还会拆分当它被封装在它现在的对象中感觉更好时会有很多逻辑.
就我个人而言,我不会太担心;如果它看起来适合放置 switch 语句,请使用它。另一方面,如果每个 PDU 类型由类而不是方法处理,那么您也可以使用工厂方法。而且,根据您的书,您可以使用 switch 语句