Design patterns 管道-正在传输的对象

Design patterns 管道-正在传输的对象,design-patterns,.net-4.5,pipeline,Design Patterns,.net 4.5,Pipeline,我在c#中实现了一个管道。理论问题-考虑到链中的一些对象需要初始源,如何形成整个链中传输的对象 var InitialSource = SomeSource; var TransfferedObject = new TransfferedObject(); TransfferedObject.InitialSource = initialSource; 这是一个最佳实践吗(web上所有关于所有处理程序的示例都使用简单字符串…是的,简单字符串是一个不错的选择,因为您知道它们是不可变的 允许不可变

我在c#中实现了一个管道。理论问题-考虑到链中的一些对象需要初始源,如何形成整个链中传输的对象

var InitialSource = SomeSource;
var TransfferedObject = new TransfferedObject();
TransfferedObject.InitialSource = initialSource;

这是一个最佳实践吗(web上所有关于所有处理程序的示例都使用简单字符串…

是的,简单字符串是一个不错的选择,因为您知道它们是不可变的 允许不可变类使用预构造的实例或缓存 实例,并重复分发它们以避免创建 不必要的重复对象。如果是您的情况

更新:


<> P>>实际上,<强>取决于你的目标。如果我们认为这项技术类似于FieldFuffic模式。如果经常请求等效对象,它可以极大地提高性能,特别是如果创建的对象很昂贵。它需要的部分?这里没有更多的OO?我想我在这里会有一些性能损失…嗯,实际上链中生成的每个任务都是不同的。我想说的问题是,我应该声明在所有处理程序之间传输的“ResultObject”,还是让它在所有处理程序的输入字符串和输出字符串之间传输(可能需要进行序列化和反序列化,但要做好扩展、阻塞队列和所有这些方面的准备。)我不知道您的设计是什么,但您可以尝试为这两个选项创建一些单元测试,并比较性能结果(因为它们对您很重要)。