让我们说我们希望代表一个人
public interface Person {
String getFirstName();
String getLastName();
}
这是用JPA实现的(代码我错过了,因为它非常平庸)
现在,我希望有一个模型,其界面是具有setter方法的人员界面的扩展
public interface PersonModel extends Person {
void setFirstName(String firstName);
void setLastName(String lastName);
}
我实现了Model接口的具体实现(我正在跳过,因为它非常平庸)
在这样做的过程中,我意识到从Person扩展的PersonModel并没有真正有意义,因为“PersonModel不是一个人”
将PersonModel强制转换为Person也不是“正确”。
实现此操作的正确方法是什么 - PersonModel可能无法从Person继承并重新定义方法,但这意味着额外的维护。
我可以将方法提取到另一个基本接口 - > PersonBase(?)并从中扩展Person(没有其他定义的方法)和PersonModel。
如果我走上述路径,那么命名基本接口的最佳方法是什么?
我使用接口的一个主要原因(除了它帮助我思考一切如何工作/适合在一起的事实)是因为可以很容易地有不同的实现层(JPA2 / NoSQL驱动程序等)。 )
这不是真正使用的代码,所以请原谅任何语法错误/错别字 - 我只是为了这个问题的目的而编写它。
赞赏的想法/指导/建议。
答案 0 :(得分:0)
上传似乎运作良好:
package person;
public class PersonApp {
public static void main(String [] args)
{
ConcretePerson p = new ConcretePerson("Superman");
System.out.println(p.getName());
PersonModel pm= p;
System.out.println(pm.getName());
Person pn=p;
System.out.println(pn.getName());
Person pnm=pm;
System.out.println(pnm.getName());
}
}
程序输出:
Superman
Superman
Superman
Superman