例如,您可以使用实体控制边界模式。
你的包结构如下所示:
下,您可能会引入了一个叫做“业务”,在包有可能是由业务负责命名的包和这些包分隔应用程序的命名空间分为“实体”,“控制”和“边界”。
com.example.myapplication.business.project.entity - >如果你正在使用JPA所有的实体可以存储在这个包,包含DTO的
com.example.myapplication.business.project.control - >在这个包中可以存储重构服务,例如,如果需要在不止一个边界中使用DAO代码,代码可以在此包中重构
com.example.myapplication.business.project.boundary - >此软件包包含客户可以看到的所有服务(例如您的网页)
在包“演示文稿”您的用户界面控制器可以存储和ui控制器应该只能访问存储在边界包中的服务。
com.example.myapplication.presentation.project
通过使用这种模式你避免使用委托者,因为存储在边界包的服务还可以包含SQL特定的东西,所有的servies和实体在他们所属的包装中。
该模式也可以在JEE之外使用。 Adam Bien在JEE架构中彻底改变了这种模式,我也在自己的项目中使用它。下面是一个例子 - >http://www.youtube.com/watch?v=JWcoiXNoKxk#t=2380
的边界的方法可能如下所示:
public interface ProjectService {
public Project createProject(Project project);
public Project getProjectById(String projectId);
public List<Project> getProjectList(ListConfig config); // where ListConfig is a class containing information of how the list should be sorted, optional pagination information, etc, so that the interface must not be changed every time you need a new parameter
public Project updateProject(Project project);
public void deleteProject(String projectId);
public Project addFeature(Project project, Feature feature);
}
@ayan ahmedov:对不起,我第一次尝试回答你的问题,我不幸编辑你的问题,我的回答是在你的问题的内容领域。我'恢复了'意外的变化。