Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择正确的设计模式_C#_Design Patterns - Fatal编程技术网

C# 选择正确的设计模式

C# 选择正确的设计模式,c#,design-patterns,C#,Design Patterns,我有一个通过API调用得到的整合产品xml。xml包含各种产品的数据,如P1、P2、P3等。 我需要编写一个windows服务,在其中我将进行此API调用,解析xml,然后将其分解为三个单独的xml..即,每个产品P1、P2、P3…一个..等等。 解析每个产品的xml的业务规则可能不同 将来,我可能需要将相同的输入xml分解成新的附加产品P4、P5等 我可以考虑策略设计模式来解决这个问题,这样代码就可以维护,更容易测试,并且将来可以扩展。 这是适用于这里的正确模式吗 谢谢。不要过早地应用任何设计

我有一个通过API调用得到的整合产品xml。xml包含各种产品的数据,如P1、P2、P3等。 我需要编写一个windows服务,在其中我将进行此API调用,解析xml,然后将其分解为三个单独的xml..即,每个产品P1、P2、P3…一个..等等。 解析每个产品的xml的业务规则可能不同

将来,我可能需要将相同的输入xml分解成新的附加产品P4、P5等

我可以考虑策略设计模式来解决这个问题,这样代码就可以维护,更容易测试,并且将来可以扩展。 这是适用于这里的正确模式吗


谢谢。

不要过早地应用任何设计模式

写最直接的代码,工作和易于阅读


当将来出现需求时,您可以返回并重新访问代码。只要它是以一种清晰、直接的方式编写的,就很容易看到可以应用于清理代码并使其更易于阅读的通用模式。

不要过早地应用任何设计模式

写最直接的代码,工作和易于阅读


当将来出现需求时,您可以返回并重新访问代码。只要它是以一种清晰、直接的方式编写的,就很容易看到可以应用于清理代码并使其更易于阅读的通用模式。

@hasen当然,从简单的直接设计开始是有意义的,但从(可能的)好的设计开始可以节省精力

我觉得责任链(COR)可能是满足这种需求的一种好模式。我假设数据来自(可能是顺序的)xml解析器。我们将数据(标记)流传递给标记处理程序链,其中链中的每个处理程序都能够处理一种类型的对象(或其中的一部分)。每个标签要么处理它,要么进一步传递它,以便为其他人提供机会

这个链是在运行时形成的,通过提供扩展点,它可以灵活地根据具有附加处理程序的新标签和产品进行自我重组

这可能需要一些额外的功能来保持内存由少数(元)标记处理程序处理(可能通过委托)


虽然我还没有想象完整的设计,但COR看起来是一个更好的选择。

@hasen当然,从简单的直接设计开始是有意义的,但从(可能的)好的设计开始可以节省精力

我觉得责任链(COR)可能是满足这种需求的一种好模式。我假设数据来自(可能是顺序的)xml解析器。我们将数据(标记)流传递给标记处理程序链,其中链中的每个处理程序都能够处理一种类型的对象(或其中的一部分)。每个标签要么处理它,要么进一步传递它,以便为其他人提供机会

这个链是在运行时形成的,通过提供扩展点,它可以灵活地根据具有附加处理程序的新标签和产品进行自我重组

这可能需要一些额外的功能来保持内存由少数(元)标记处理程序处理(可能通过委托)

虽然我还没有想象完整的设计,但COR看起来是一个更好的候选者