将不同的数据类型传递给库时,我应该遵循哪种设计模式?
Which Design Pattern I should follow when passing different data type to a library?
我正在创建一个 CSV 导出库,其中输入数据将来自不同的来源,例如我们可以将用户数据导出到 CSV,我们也可以将订单数据导出到 CSV。
我正在考虑创建一个 FeedCSVProcesser,我们将从输入数据准备 CSV。
输入数据将是已定义的类型,例如对于用户,它将是 UserFeed,对于订单,它将是 OrdersFeed,所有这些都共享通用接口 IFeedType。然后我们可以使用 DI 原理和 CSV 使用反射从 IFeedType 中提取数据并准备 CSV。这种方法是否正确,因为我不确定我正在遵循哪种设计模式或应该有什么。
请指导?
看来你做得不错。如果您还没有遇到任何问题,请不要寻求设计模式。尊重 KISS and YAGNI 原则。继续遵循您提到的 OOD 原则。
在您的案例中最重要的事情是使 "FeedCSVProcesser" 与其应该处理的文件分离。您不希望每次要导出新 class 时都更改此 class。
正如您所提到的,依赖倒置原则是这样做的一种特定形式。像 "FeedCSVProcesser" 这样的高级模块不应该依赖于低级模块 ("Orders", "Users")。两者都应该依赖于抽象("IFeedType")。
正如@TechWisdom 所说,您做得很好,您可以在设计中进行构建过程。您的设计似乎接近策略模式,其中根据值执行特定算法。
我正在创建一个 CSV 导出库,其中输入数据将来自不同的来源,例如我们可以将用户数据导出到 CSV,我们也可以将订单数据导出到 CSV。
我正在考虑创建一个 FeedCSVProcesser,我们将从输入数据准备 CSV。
输入数据将是已定义的类型,例如对于用户,它将是 UserFeed,对于订单,它将是 OrdersFeed,所有这些都共享通用接口 IFeedType。然后我们可以使用 DI 原理和 CSV 使用反射从 IFeedType 中提取数据并准备 CSV。这种方法是否正确,因为我不确定我正在遵循哪种设计模式或应该有什么。
请指导?
看来你做得不错。如果您还没有遇到任何问题,请不要寻求设计模式。尊重 KISS and YAGNI 原则。继续遵循您提到的 OOD 原则。
在您的案例中最重要的事情是使 "FeedCSVProcesser" 与其应该处理的文件分离。您不希望每次要导出新 class 时都更改此 class。
正如您所提到的,依赖倒置原则是这样做的一种特定形式。像 "FeedCSVProcesser" 这样的高级模块不应该依赖于低级模块 ("Orders", "Users")。两者都应该依赖于抽象("IFeedType")。
正如@TechWisdom 所说,您做得很好,您可以在设计中进行构建过程。您的设计似乎接近策略模式,其中根据值执行特定算法。