作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑以下类层次结构:
interface Transport { ... }
class Car implements Transport {}
class Bicycle implements Transport {}
class Airplane implements Transport {}
每个类都实现一些特定的方法。
在 EJB 代码的某些部分,有一个服务从数据库获取 Transport
实例,并调用特定于 Car
的方法。
Transport transport = getTransport(...);
Car car = (Car) transport;
car.specificCarMethod(...);
有什么好的做法可以避免 Actor 阵容吗?
最佳答案
这是基于意见的;这是我的意见。
如果界面经过精心设计,您就不需要进行强制转换。您可能需要在接口(interface)中发布特定的CarMethod,并在除Car之外的所有类中以空主体实现它。
从 Java 8 开始,您可以为方法指定默认实现,在 Java 8 之前,您可以使用抽象类来代替接口(interface)或除了接口(interface)之外还使用抽象类。
您也可以考虑使用 visitor pattern如果您想将代码与实现接口(interface)的类分离,并避免在接口(interface)中声明某些方法。
关于java - 传承与类型转换设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37725237/
我正在使用 Eloquent/Laravel 设计一个数据库,我想知道以下是否是最佳实践。 对于“汽车”表,某些列特定于汽车类型(负载箱尺寸),而某些列则适用于所有汽车(颜色)。 如果我有一张表,其中
难道不能从 boost::variant 继承并使用结果类作为选择运算符的结果吗? struct jass_statement_node { }; typedef boost::variant , b
我是一名优秀的程序员,十分优秀!