【发布时间】:2018-03-14 15:43:21
【问题描述】:
我继承了 1000 多行意大利面条式代码。我可以将其分解为十几个方法,每个方法都创建一个 FinancialTransactionObject,但采用不同的日期、金额和其他参数来创建它们的交易。
我的直觉告诉我要让每个方法都有自己的类。因此,我可以使用 1 个方法从基类或接口继承十几个类:
abstract FinancialTransactionObject Calculate();
并将参数移动到构造函数或使其成为公共属性。构造函数意味着我不能重用我的实例并且每次都必须创建一个新对象。属性意味着消费代码可以忘记设置它们。在每个方法上保留参数只会在单独的文件中给我十几个方法,并且感觉不是面向对象的。
似乎这个问题的变体经常出现。是否有一个好的、一致的、全行业的设计模式来处理它?
【问题讨论】:
-
我想说:一个班级。一堆返回 FinancialTransactionObject 的静态函数。同名,重载参数。
-
如果它们都返回同一个类(而不是继承的东西),为什么它们不是构造函数?如果它们返回不同的对象,它们仍然可以只是构造函数,但用于不同的类。如果重点是隐藏出现的对象,我会将它们作为方法保留在同一个类中。
-
为什么重用实例对您很重要?这些类是否拥有创建/打开成本高昂的资源?
-
是否有任何共同的属性或只是一个
Calculate()方法? -
请注意,@Christopher 建议的是 Factory 模式,听起来确实像你想要的那样
标签: c# oop design-patterns