java – 在面向对象设计中处理类型指示符的最佳方法是什么?
参见英文答案 > Object-oriented design: Saving complex objects????????????????????????????????????2个 我认为有两种方法可以处理它:创建一个带有几个子类的Vehicle类,比如船,卡车,汽车,并有一个枚举指示实际类型.这可以工作,允许您表示与公共子类共享一些共同特征的车辆.但是它允许你在类中使用不匹配的枚举. 我认为处理它的传统方法是为每种类型设置一个单独的子类,它可以是车辆的子类或车辆的子类.例如,重型和轻型卡车可能是卡车的子类;船和游艇可能是船的子类;雪地摩托车可能是车辆的子类.问题是,它并不能真正代表其他概念. 有没有人对这些场景有任何模式或最佳实践? 彼得 编辑: 这导致了传统OO手段的另一个缺点,即偏离实际类型的类型指示器,因为它显示了需要执行某种实例的类型并将值转换为用户友好的类型. (另外,澄清我说的是单个枚举,而不是每个子类的枚举.) 最佳答案
真正的问题
两个“事物”在他们应得自己的阶级之前需要有多么不同? 答案 这完全取决于您将如何使用这些对象. >你会根据他们拥有的某些属性来比较它们(例如,它是否浮动?)?如果是这样,具有差异化属性的单个类是有意义的. 这只是两个例子.关键是,如果你创建一个新类,它应该是有用的. Java特别容易过度抽象. 我该怎么办其他的? 其他听起来像一组车辆不是卡车而不是汽车.听起来你想要抓住所有其他车辆并将它们放在一个班级中.为什么不使用Vehicle类?不要创建另一个派生自Vehicle的类,但添加零功能.这里适用相同的有用性测试. >车辆是否足以满足我对所有“其他”车辆的需求?如果没有,我需要创建更多的类. 我接受了你的建议并创建了两个有用的类.现在,我无法区分他们,我拒绝使用instanceof.我该怎么办? 无论你的课程有多抽象,我总能将你的课程实例添加到List< Object>然后将无法区分他们.你不能防弹你的设计. 让我换一种说法 – 如果你将鸡蛋和汽车添加到列表中,然后你需要区分鸡蛋和汽车,那么你的列表就会出现问题,而不是鸡蛋和汽车. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |