C# “设计模式”;“读取、处理、保存”;图案

C# “设计模式”;“读取、处理、保存”;图案,c#,design-patterns,C#,Design Patterns,我正在寻找一种设计模式来解决以下问题: 读取输入 处理数据(包括验证) 保存结果 例如: 读取csv文件,处理数据,另存为xml 读取MQ消息,处理数据,保存到数据库 我在想一个BusinessObject,它: 具有一个IInput实现来处理自身的读取和加载 可以通过“规则”进行验证 有一个IOutput实现来处理保存本身 e、 g.(伪代码!) 然后有一个加载、处理和保存方法 然而,在我看来,这是不对的。我认为BO应该能够加载并保存自己 如果有人知道这可能是什么模式,我可以仔细阅读,或者

我正在寻找一种设计模式来解决以下问题:

读取输入

处理数据(包括验证)

保存结果

例如: 读取csv文件,处理数据,另存为xml 读取MQ消息,处理数据,保存到数据库

我在想一个BusinessObject,它:

  • 具有一个
    IInput
    实现来处理自身的读取和加载
  • 可以通过“规则”进行验证
  • 有一个
    IOutput
    实现来处理保存本身
e、 g.(伪代码!)

然后有一个加载、处理和保存方法

然而,在我看来,这是不对的。我认为BO应该能够加载并保存自己


如果有人知道这可能是什么模式,我可以仔细阅读,或者给我一个示例/解释,我将非常感激。

您可以使用管道模式。在该模式中,您定义一个组件链(管道组件;然后该链就是管道)并向其提供输入数据。然后,每个管道组件依次对通过管道推送的数据执行。任何组件都可以从该数据中读取数据并向其写入数据

另见:


仅供参考,您可能会在主题“ETL”或extract-transform-load下找到更多信息。就业务对象知道如何加载和保存它们自己而言,我认为这是其中一个主题,有两个学派——一个赞成,一个反对。听起来可能与工作单元模式类似的东西也可能与您相关。@JustinPinkley我的一半认为我应该有工厂类,使用输入创建BO,然后另一组使用BO并写出结果。另一半人说,只要有办法,BO应该能够加载和保存自己。关于BO知道如何加载和保存自己(即智能对象)与存储库模式的一些想法:管道似乎正是我想要的。我甚至不确定我是否需要一个BO,只需要我的过滤器:加载、验证、处理、验证结果、保存:)
public abstract class BusinessObject
    {
        public IInput Input { get; set; }
        public IOutput Output { get; set; }

        public BusinessObject(IInput input, IOutput output)
        { }
    }