c# - 实现属性或实现子类

标签 c# java oop architecture class-design

我有一个名为 List_Field 的类,顾名思义,它构建列表输入字段。这些列表输入字段允许用户为每个列表选择一个项目。

我希望能够构建允许用户在每个列表中选择多个项目的列表输入字段,因此我面临以下困境:

我应该通过在现有的 List_Field 属性中实现一个 multiple_choice_allowed 属性来做到这一点,还是应该实现 Multiple_Choice_List_Field 子类>List_Field 类?

遇到这样的困境,我应该遵循的工程原则是什么?

最佳答案

看看 SOLID principles .他们将帮助您进行设计。特别是,单一职责原则会告诉您不要将两个关注点混合在一个类中,而 Liskov 替换原则会告诉您不要创建违反父类(super class)契约的子类,就像您也提议的那样。

那么在您的情况下,解决方案是什么?您可以创建一个与选择类型无关的抽象基类,然后创建 2 个子类,一个用于单选,另一个用于多选。

关于c# - 实现属性或实现子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6008534/

相关文章:

c# - Entity Framework 4.1 Linq Contains 和 StartsWith

c# - Socket.io res 没有得到统一

java - 从 LinkedList 索引处删除一个元素

php - 删除整个 PHP 类

c# - 从 ASP.NET Web 处理程序 (.ashx) 下载文件时的错误处理

java - 为什么catalina.home_IS_UNDEFINED目录是Logback在同一个项目目录下生成的?

java - 如何确定 Guava 缓存中是否存在某个键,以便我不覆盖它?

java - 覆盖equals方法与创建新方法

javascript - 如何在 Javascript 中更改函数内部变量的值?

c# - 我们可以扩展 HttpContext.User.Identity 以在 asp.net 中存储更多数据吗?