c# - 聚合不同责任的最佳方式

标签 c# design-patterns

我有一个读取条形码、提取部分并检查其是否有效的应用程序。 我使用 C#、Autofac 和 Nunit,但我不确定哪个是最好的实现:

解决方案 A: (门面模式?)

public class Checker {
   public Checker(IBarcodeReader reader, IBarcodeParser parser) {
      ...
   }
   public bool Check() {
     string barcode = reader.Read();
     string id = parser.Parse(barcode);
     // check if id is valid

   }
}

解决方案 B: (策略模式?)

public class Checker {
   public Checker(IBarcodeReader reader) {
      ...
   }
   public bool Check() {
     string id = reader.Read();
     // check if id is valid

   }
}

public class BarcodeReader: IBarcodeReader {
   public BarcodeReader(IBarcodeParser parser) {
      ...
   }
   public string Read() {
     string barcode = ... // read barcode from device
     return parser.Parse(barcode);
   }
}

最佳答案

你是不是有点过度设计了?至少从示例中看是这样。 我会放弃策略模式的想法。您是否会制定不止一种策略?

我喜欢第一个解决方案(良好的可测试性和 DI),但我真的不会将 3 行代码称为 Facade。

关于c# - 聚合不同责任的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4969972/

相关文章:

c# - C# 中的虚拟方法或事件

c# - 访客模式的实现。小行星/宇宙飞船碰撞问题

java - 没有 load() 方法我无法测试单例

c# - 为什么 Path.GetFileName(string) 返回完整路径?

c# - 将此消息发送到您的机器人时出错 : HTTP status code Forbidden. Azure 门户

c# - AutoMapper - 在 View 模型中映射子集合

c# - 如何添加到 .net 中的 RavenDB List<type>

java - 数据库关系建模

c# - 使用 StringBuilder Remove 方法比在循环中创建新的 StringBuilder 方法更节省内存吗?

java - 黑莓设计模式问题: