Oop 创建只在构造函数期间执行代码的对象是否设计糟糕?
在我的设计中,我使用评估数据记录的对象。使用数据记录和计算类型作为参数调用构造函数,然后构造函数调用计算记录所需的所有对象代码。这包括使用求值类型在文本文件中查找其他参数(如数据) 在250个独特的评估类型附近,使用相同或相似的代码和来自文本文件的独特参数 其中一些评估使用不同的代码,因此我从这个模型中受益匪浅,因为我可以使用继承和多态性 一旦对象被创建,就不需要在对象上执行额外的代码(至少现在是这样),它的使用更像一个结构;它保留在一个列表中,3个属性将在以后使用 我认为这种设计最容易理解、编码和阅读 我想一个合乎逻辑的替代方法是使用返回score结构的函数,但不能从方法继承,因此在imo中会有点草率 我正在使用vb.net,这些类将在asp.net web应用程序以及分布式应用程序中使用Oop 创建只在构造函数期间执行代码的对象是否设计糟糕?,oop,Oop,在我的设计中,我使用评估数据记录的对象。使用数据记录和计算类型作为参数调用构造函数,然后构造函数调用计算记录所需的所有对象代码。这包括使用求值类型在文本文件中查找其他参数(如数据) 在250个独特的评估类型附近,使用相同或相似的代码和来自文本文件的独特参数 其中一些评估使用不同的代码,因此我从这个模型中受益匪浅,因为我可以使用继承和多态性 一旦对象被创建,就不需要在对象上执行额外的代码(至少现在是这样),它的使用更像一个结构;它保留在一个列表中,3个属性将在以后使用 我认为这种设计最容易理解、编
感谢您的输入,总的来说,在构造函数中放入有意义的代码不是一个好主意,因为当您子类化时,您最终会在严格的构造函数执行顺序上受到阻碍 构造函数最适合用于使对象处于一致状态。“实际”工作最好在实例方法中处理。将工作作为一种方法实施后,您将获得:
- 将要评估的内容与要评估的内容分开李>
- 多态性(如果使用虚拟方法)
- 将工作分解为逻辑部分的选项,将每个部分作为一个具体部分来实现。这些模板方法可以在子类中被重写,这提供了“像我的超类一样做,但是做得有点不同”李>
简而言之,我将使用方法来实现主计算。如果您担心在不调用对象的求值方法的情况下创建对象,则可以使用工厂来创建对象,该工厂在构建后调用求值方法。通过方法的执行顺序灵活性,您可以获得构造函数的安全性。一般来说,将在构造函数中执行任何重要操作的代码放在一个不太好的主意中,因为当您子类化时,您最终会在严格的构造函数执行顺序上受到限制 构造函数最适合用于使对象处于一致状态。“实际”工作最好在实例方法中处理。将工作作为一种方法实施后,您将获得:
- 将要评估的内容与要评估的内容分开李>
- 多态性(如果使用虚拟方法)
- 将工作分解为逻辑部分的选项,将每个部分作为一个具体部分来实现。这些模板方法可以在子类中被重写,这提供了“像我的超类一样做,但是做得有点不同”李>
简而言之,我将使用方法来实现主计算。如果您担心在不调用对象的求值方法的情况下创建对象,则可以使用工厂来创建对象,该工厂在构建后调用求值方法。通过方法的执行顺序灵活性,您可以获得构造函数的安全性。在构造函数中执行代码是可以的;但是只有属性而没有方法可能违反了这一原则:也许这些属性应该是私有的,而使用(“ask”)这些属性的代码应该成为类的方法(您可以调用或“告诉”)。在构造函数中执行代码是可以的;但是只有属性而没有方法可能违反了这一原则:也许这些属性应该是私有的,而使用(“ask”)这些属性的代码应该成为类的方法(您可以调用或“告诉”).一些代码或伪代码可能会回答这个问题……这取决于语言,在JavaScript中,您可以只返回一个包含所需变量的对象。如果所有内容都在构造函数中,如何使用多态性?如果您将求值移动到(虚拟)方法,您将得到多态性。我不清楚在构造函数期间执行是什么意思。构造函数将读取文本文件,然后调用一个求值方法,该方法将为求值的各个部分调用方法。通过这种方式,可以覆盖整个计算过程,也可以覆盖单个段。一些代码或伪代码可能会回答这个问题……这取决于语言,在JavaScript中,您可以只返回一个包含所需变量的对象。如果所有内容都在构造函数中,如何使用多态性?如果您将求值移动到(虚拟)方法,您将得到多态性。我不清楚在构造函数期间执行是什么意思。构造函数将读取文本文件,然后调用一个求值方法,该方法将为求值的各个部分调用方法。通过这种方式,可以覆盖整个评估过程,也可以覆盖单个部分。我认为很遗憾,您链接到的文章的标题(!!!)中存在严重的拼写错误。@Jason-您知道任何好/更好的文章解释“告诉-不要问”的意思吗?没有提到内容的质量。只是,cmon,至少要正确拼写你的标题!我觉得很遗憾,你链接到的文章的标题(!!!)有一个严重的拼写错误。@Jason-你知道有什么好/更好的文章解释“告诉不要问”的意思吗?没有提到内容的质量。只是,cmon,至少要正确拼写你的标题!是的,我实际上所做的和你所说的模板方法非常相似