实现属性或实现子类

Ema*_*sev 16 c# java architecture oop class-design

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

我希望能够构建列表输入字段,允许用户为每个列表选择多个项目,所以我有以下两难:

我应该通过multiple_choice_allowed在现有List_Field属性中实现属性来实现,还是应该实现Multiple_Choice_List_Field类的子List_Field类?

面对像这样的困境,我应该遵循什么样的工程原理?

Jor*_*dão 19

看看SOLID原理.他们会帮助你完成你的设计.特别是,单一责任原则将告诉您不要将两个问题混合在一个类中,Liskov替换原则将告诉您不要创建违反超类合同的子类,就像您提出的那样.

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