Java中的数据层,模型层和接口

时间:2012-11-15 14:20:57

标签: java

让我们说我们希望代表一个人

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驱动程序等)。 )

这不是真正使用的代码,所以请原谅任何语法错误/错别字 - 我只是为了这个问题的目的而编写它。

赞赏的想法/指导/建议。

1 个答案:

答案 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