在另一个问题中,有人告诉我在我的java程序中实现以下内容。但是,我是Java的新手,我不知道如何开始将我的简单程序转换为这个结构:
Data Access Layer (read/write data)
Service Layer (isolated business logic)
Controller (Link between view and model)
Presentation (UI)
dependency injection.
program to the interface:
这是否来自某个框架?我应该开始学习Spring吗?这个结构会自然地发展吗?或者,我可以在不使用框架的情况下逐一实现上述技术吗?
答案 0 :(得分:1)
您可能想查看Domain Driven Design。代码示例使用Java。您列出的内容与任何特定技术相比都与设计相关。
答案 1 :(得分:1)
简而言之:
但我建议你从非常基本的开始。从基本的阅读,而不是跳到行话。首先阅读一本关于使用Java开发应用程序的好书。您也可以查看
答案 2 :(得分:0)
如果您愿意,可以在没有框架的情况下实现它们,但是您放弃了框架为您提供的任何好处。
您引用的分层是正确的,独立于任何框架;它只是编程接口和关注点分离。如果你希望尽量减少你想要学习的新技术的数量,你可以在没有Spring的情况下自由地做。
如果你不知道持久性是什么,那么你就不应该跳进Spring。持久性意味着使用SQL将数据存储在大多数人的关系数据库中。如果你不知道,我建议从那里开始。
如果您从未使用过基础技术,那么世界上所有的图书都无济于事。
如果你从来没有做过这些,我建议坚持使用仅 JSTL(没有scriptlet)直接使用JDBC,servlet和JSP。除此之外的任何事情都会令人困惑。
如果你有一个具有持久性,服务和视图层的Foo模型对象,接口可能如下所示:
package model;
/**
* A model object that's interesting from your problem's point of view
*/
public class Foo
{
}
package persistence;
/**
* CRUD operations for a Foo
*/
public interface FooDao
{
Foo find(Long id);
List<Foo> find();
void saveOrUpdate(Foo foo);
void delete(Foo foo);
}
package service;
/**
* Just a data service that wraps FooDao for now, but other use cases would
* mean other methods. The service would also own the data connection and manage
* transactions.
*/
public interface FooService
{
Foo find(Long id);
List<Foo> find();
void saveOrUpdate(Foo foo);
void delete(Foo foo);
}
package view;
/**
* A class that owns services, validates and binds input from UI, and handles routing
* to the next view once service is complete.
*/
public interface FooController
{
ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response);
}
当然,这些只是界面。您需要提供实施。
答案 3 :(得分:0)
你可以实现所有这些想要 - 它之前已经完成了很多次,但没有什么能阻止你再次这样做。
更好地利用您的时间是为了确保您理解上面列出的关注点(通常是正确的),并确定现有框架的最有效集成(例如,Hiberante,Spring,Guice)等)。对于那个问题有多个答案(并且不缺少意见!),但是在所有条件相同的情况下,您需要整合的框架越少,它就越容易和更好地适应。
Spring 有一个非常着名的框架,涵盖了很多这些东西,所以从那里开始是明智的。它还允许您使用其他框架(即,您可以使用Spring的选择部分)。例如,您可以使用Spring进行依赖注入,并使用不同的MVC框架。
答案 4 :(得分:0)
很难回答这个问题。首先,我不知道你的程序是什么样的。其次,我不认为“转换”它是可以做到的,或者应该做的事情。您所谈论的是开发人员在设计应用程序时通常会想到的架构概念
如果您对这些概念感兴趣,我建议您阅读Model-View-Controller pattern (MVC)和service-oriented Architecture (SOA)。
这些是不适用于Java的一般概念。但是,它们广泛用于Java企业开发。各种框架允许您使用这些概念创建应用程序。例如,正如其他人所指出的,Spring Web MVC是Spring Framework的一部分,它允许您创建符合MVC模式的Web应用程序。
答案 5 :(得分:0)
如果您的程序非常简单,可以通过为每个程序使用一个calss来完成此分离 类别。
Data Access Layer (read/write data) -> one class for presisting laoding
Service Layer (isolated business logic) -> one calss with bussiness logic
Controller (Link between view and model) -> in simple swing app this merges with UI
Presentation (UI) -> one class for one widnow
dependency injection -> not used in small apps
program to the interface -> Your service class should use interface tah is used by other class instead of directly your serivce implementation:
如果它不是一个简单的程序,你可能想要为每个类别提供包。
但是 - 不要过度设计!这些概念可以帮助您管理大型应用程序,而不是在您的编程资源中毁掉您!