我相信面向对象,但还没有达到为了“符合面向对象”而使用不适当的设计/实现的程度。
那么,如何处理Serlvet/EJB/DataContainer分层架构:
这种方法很有吸引力;DataContainer 的作用很明确,并且很容易知道数据来自哪里。
除了不是面向对象之外,这还会导致业务层类不明确,难以命名和组织。
即使我们试图变得更加“面向对象”(例如,将其中一些方法放入 DataConatiners 中),其中一些操作也会对多个数据集进行操作。
如何防止业务层变得令人困惑的程序,但又不会用业务逻辑污染您的数据容器?
class UserServlet {
handleRequest() {
String id = request.get("id");
String name = request.get("name");
if (UserBizLayer.updateUserName(id,name))
response.setStatus(OK);
else
response.setStatus(BAD_REQUEST);
}
}
class UseBizLayer {
updateUserName(String id, String name) {
long key = toLong(id);
user = userDAO.find(key);
if user == null
return false;
if (!validateUserName(name))
return false;
user.setName(name);
userDAO.update(user);
return true;
}
validateUserName(String name) {
// do some validations and return
}
}
class User {
long key;
String name;
String email;
// imagine getters/setters here
}
Run Code Online (Sandbox Code Playgroud)
validateUserName用户,因为它只对名称进行操作;我想它可以进入另一个类,但是我们有另一个程序“uti”类型类我意识到这个示例并没有那么糟糕,但想象一下 10 个 DataContainer 和 20 个 BizLayer 对象,每个对象都有多个方法。想象一下其中一些操作并不“集中”在特定的数据容器上。
我们如何避免这成为程序上的混乱?
因此,我将通过以下几个要点来阐述我对此的想法: