- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个无状态 session bean(外观),它将用于“管理”特定实体,我们将其称为产品。将有添加新产品、更新现有产品、获取产品等的方法(我使用 Hibernate 进行持久化,因此我有一个“ProductDbManager”bean,外观将用于数据库访问)。
此 Bean 将作为 Web 服务公开,以便可以从 Web 界面和简单的桌面应用程序调用它。
我的问题是,对于诸如 AddProduct 之类的方法来说,接受 Product 实例或诸如“Name”、“Description”、“Price”等单个参数是否是最佳实践?等等?
最初创建的产品可能仅包含“名称”,或者可能包含“名称”和“描述”,或者设置了所有属性,等等。从这个角度来看,接受 Product 实例会更简单(就创建外观而言),以便客户端可以简单地创建一个新的 Product,设置可用的属性,然后将其传入。
使用替代选项时,我需要创建相当多的 AddProduct 重载才能接受不同的参数。然而,为了尽可能灵活并使立面用户的生活更轻松,这是否更好?这两个选项都应该可用吗?
最佳答案
我更喜欢 Web 服务方法来接收表示相关数据项的对象。
有时对于不平凡的方法,甚至有:
DoActionResponse doAction(DoActionRequest request);
作为我的网络服务方法。然后,Web 服务实现将执行输入验证(与 servlet 在将表单输入传递到代码核心之前验证表单输入的方式相同)以及将必要的数据映射到核心代码所需的数据。为什么要进行数据映射?我发现,拥有一个与内部核心系统数据模型分离的 Web 服务数据模型可以让我根据需要更新内部模型,而无需更改外部模型,从而影响客户端。
为了你的,我愿意
boolean addProduct(Product toAdd);
万一您向“产品”添加更多字段,则无需更改 Web 服务接口(interface),这最终将导致 5 个人不得不在三年后更改其代码,因为他们的系统依赖于您的系统网络服务。
我还会考虑一些身份验证,以便只有管理员用户才能操作数据库。 SOAP 有这方面的东西,或者你也可以:
boolean addProduct(Product toAdd, Authentication auth);
或
AuthToken login(String username, String password);
boolean addProduct(Product toAdd, AuthToken token); // token is a string really. like a session id
但是如果向客户端返回错误,而不仅仅是 true/false 呢?当然,有 SOAPFault,但它的级别相当低。这就是为什么我有时会使用响应对象,其中对象中的字段之一是错误对象数组(错误代码、错误消息等)。
关于java - Façade - 接受对象实例,还是单独的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1165891/
在尝试以 *.accde 格式创建仅执行前端数据库文件时,我收到错误消息“无法创建 accde、mde 或 ade。在进行了一些研究后,我被告知此消息发生在数据库的维度太大了。看着我的数据库只有10K
我是一名优秀的程序员,十分优秀!