首页 > 解决方案 > 如何将属性和行为添加到已编写的类

问题描述

我想知道是否有一个好的做法可以将一些属性和行为添加到已经编写的类中。在我的示例中,我创建了一个基本类 User。现在,在另一个里程碑中,我想添加一个通知系统,并在 User 类中添加一个 NotificationList(以及相关的行为)。在我看来,我有 3 个选择:

  1. 在我的类 User 中编写新的属性/函数。但是对于每个新功能,我都必须更新一个已经编写、测试等的类。并且每次都会重载 User 类
  2. 使用继承:扩展用户的类 UserWithNotification,并使用户抽象。但是对于未来的每一个新功能,我将不得不扩展、扩展和扩展......
  3. 使用装饰器模式,但在我的情况下,我不确定它是否适合

我正在尝试了解项目如何尽可能灵活,以支持在开发后期出现的新功能。感谢帮助 !

标签: inheritancedesign-patterns

解决方案


在这种情况下,我会选择Option 1。如果我猜对了,你要做的就是向User类添加一个新属性,这对于作为软件应用程序的生物来说是很常见的事情。即使您已经测试了您的User类,这也将是一个“简单”的新属性添加,它不会对您已经编写的代码产生太大影响。我不太确定 aNotificationList是关于什么的,但我的猜测是,如果不是所有相关行为,大多数(如果不是全部)都可以并且可能应该放在一个假设的新类Notification中。

选项 2将在您的代码库中与越来越多不同类型的Users 混淆。绝对不行。

我认为,正如您所写的那样,选项 3并不真正适合此用例。

总结一下,根据您在问题中提供的上下文,我肯定会选择选项 1,这不仅是最简单的(软件通常应尽可能简单,并且只有在有充分理由时才应复杂化这样做)也是最适合您的用例的那个。


推荐阅读