如何实现包含以后可能会更改的数据类的OOP设计?

问题描述 投票:0回答:1

我正在使用 Java 开发一个简单的 CLI 待办事项列表管理器应用程序来测试我的技能。我读过一些有关 OOP 设计模式和原则的内容。就像对象之间不应该有太多依赖关系、单一责任原则等。但我的问题是,数据类怎么样?就像我正在创建一个待办事项列表应用程序一样,我将需要一个

Task
类来存储任务。假设
Task
的第一个版本有
title
dueDate
isDone
字段。我构建了我的系统来处理这个数据类。但在第二个版本中,假设我添加了另一个名为
priority
的字段。所以我的系统将会发生变化。这是一个非常基本的例子。但我确信这种变化也会发生在现实世界的应用程序中。那么这是否意味着我们必须更改与
Task
类一起使用的任何逻辑,或者有一些做法可以避免这种情况?

我在网上阅读了一些有关 OOP 设计实践和 SOLID 原则的文章。但它们主要讨论对象之间的操作和交互。我找不到专门适合数据类的东西。如果有人能分享有关此类问题的经验,我将不胜感激。我在这里提供的示例非常基本,但我希望您明白我想说的内容。我是初学者,没有任何实际的语言经验,所以我无法提供任何更好的例子。谢谢您的宝贵时间!

oop
1个回答
0
投票

您可以将

priority
字段以及 getter 和 setter 添加到数据类中,这本身不是问题。如果您需要因这个新字段而应用逻辑更改,那么您将需要自己实现。

你需要问自己的问题是:

priority
会成为该类所有实例的属性吗?

如果答案是“是”,那么您只需将该字段添加到类中并实现您需要的任何逻辑更改。

如果答案是“否”,那么您将需要保持类不变并创建一个新类来扩展此类并覆盖子类中需要更改的任何方法。

因此,如果您实例化子类,您将拥有优先级和基于它的逻辑。而且,如果您实例化基类,那么它将保持不变。

因此,您始终需要考虑是否所有实例都需要您要实施的更改,或者是否有实例需要在没有它的情况下工作。

© www.soinside.com 2019 - 2024. All rights reserved.