Python中的设计模式,有许多特定于客户的异常

2024-09-30 00:35:28 发布

您现在位置:Python中文网/ 问答频道 /正文

此刻我们正在做一个大项目

此项目应创建EDIFACT消息。一开始这并不难,但关键是有很多客户都有自己的标准实现

除此之外,我们正在使用几个EDIFACT标准(在我们的例子中是D96A和D01B)

一些客户异常可能小到具有不同的字段长度,但有些客户异常使自己的实现完全不同

目前,我们已经在一个列表中列出了客户异常(只是为了保持一致),在代码中我们使用了如下内容:

if NAME_LENGTH_IS_100 in customer_exceptions:
    this.max_length = 100
else:
    this.max_length = 70

对于一些简单的例外情况,这可以正常工作,但此时代码开始变得非常混乱,我们正在考虑重构代码

我正在考虑某种工厂模式,但我不确定它的实现。 另一种选择是创建一个基本包,并为每个偏离标准的客户单独实现

我希望有人能给我一些建议

提前谢谢


Tags: 项目代码消息列表标准客户thislength
2条回答

我认为你的问题太宽泛了,无法得到正确的回答(因为这个原因,我决定单击“关闭”按钮,但决定不这样做)。原因如下:

你提供的代码片段没有错。它应该是某种初始化例程的一部分,这样就可以了。像这样的事情太多也没什么坏处

但如何处理更复杂的案件在很大程度上取决于案件本身

  • 在很多情况下,拥有这些代表客户特殊选择的变量就足够了
  • 对于其他方面,我建议为每个客户提供一个带有子类的Customer基类(或者客户甚至可以按层次结构分组,然后一个好的继承树可以反映这一点)
  • 对于其他情况,我再次建议使用Python装饰器进行面向方面的编程,以调整方法、函数和类的行为

由于这在很大程度上取决于您的具体用例,我认为这个问题不能比这个更具体地回答

为什么不把所有这些放在一个资源文件中,以标准作为默认值,每个异常句柄都放在一个附加值中,那么您只需要为正确的客户机读取正确的键,代码就保持干净了

相关问题 更多 >

    热门问题