我需要一个建议w.r.t.我们正在考虑的一种设计方法。
我们正在实现一个Java Web服务提供程序,它可以处理关系数据库中的数据。我们的建议课程是:
我认为更像是将DAO转换为Command。但是,由于某些原因,我不太喜欢这种方法: - 在ServiceImpl中:您无法影响被调用的DAO流。对于例如执行第一个DAO之后,如果我不想执行第二个DAO但执行第三个DAO,则很难实现。 - 除了不确定我们是否可以在概念上使用DAO。因为Command对象可以有业务逻辑,但是DAO应该只处理向db读取和写入数据的方面。
请让我知道您对设计是否合适的看法。感谢
答案 0 :(得分:4)
在这种情况下,我没有看到使用Command设计模式的好处。
1. DAO的想法是提供一个抽象持久化机制的接口。该接口传统上定义了CRUD方法。对于特定的持久性机制,每个DAO具体类通常都会实现DAO接口。例如,您可以有一个实现将数据存储到关系数据库中,另一个实现将数据存储到xml文件中。这两种实现都可以互换,因为它们实现了相同的接口
2.服务功能可以分成单独的服务层。通常,此层依赖于DAO层(用于持久性)。服务接口可以类似于将应用程序中实现的业务逻辑(通常是业务层中的逻辑)暴露给潜在客户端的外观。例如:
用户DAO界面:
public interface UserDao { void save(User user); void delete(User user); void update(User user); User findByUsername(String username); List findAll(); ... }
用户服务界面:
public interface UserService { void createUser(String username, String password); boolean loginUser(String username, String password); boolean isUsernameUnique(String username); .... }
服务实施:
public class UserServiceImpl implements UserService { private UserDao userDao; public UserServiceImpl(UserDao userDao){ this.userDao = userDao; } ... }