考虑以下类层次结构:
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/