【问题标题】:Pattern for encapsulating same process on different types of objects用于在不同类型的对象上封装相同进程的模式
【发布时间】:2023-03-15 23:49:01
【问题描述】:

我有两个独立的对象(类),它们具有非常相似的属性(但不相同)。但是,两者都有“折扣”属性,我需要在该过程完成后对其执行某种类型的操作并返回该特定对象。

Class1:
Name, Total, Discount, Prop1, Prop5 etc

Class2:
FirstName, TotalAmount, Discount, Prop5, Prop11 etc

我想将 Class1 或 Class2 注入到我的服务中,执行某种类型的折扣计算并返回一个更新的对象,其折扣属性已更新以及总计(通知 Total 与 TotalAmount)

我会使用一个通用接口,即“IDiscount”,它有一个属性Discount { get; set; }? Class1 和 Class2 都继承哪个?

ServiceClass constructor:
MyService(IDiscount)

这样我可以使用泛型: class1 = MyService(Class1) OR MyService(Class2)

这是正确的方法吗?我将如何处理更新总计(这两个在每个类中的调用方式不同)

【问题讨论】:

    标签: c# asp.net .net


    【解决方案1】:

    如果 Class1 和 Class2 是相似的对象,只有几处不同,我会考虑将它们的公共属性(包括折扣)、字段和方法分组到父类中,它们都继承自父类,并且我的方法接受父类型。如果 Class1 和 Class2 是不同的对象,我会考虑使用接口并让我的方法接受它。

    也想一想:我将来如何使用这个父类或接口?我真的是在设计正确的东西,还是只是解决一个临时问题?

    最终,只有你可以拨打这些电话。

    【讨论】:

      猜你喜欢
      • 2015-09-04
      • 2022-12-12
      • 2021-04-15
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-19
      • 1970-01-01
      相关资源
      最近更新 更多