富客户端程序设计实例 - Action层 - 逻辑分支低耦合: Action耦合Entity
Action层调用Service层,Service层调用DAO层,DAO层有独立简单的放方法查阅数据库中的数据。根据第一幅图的描述可以看出,设计之初Dao层并没有关联到Entity;而是把Entity与Action关联。DAO层利用方法泛型隔离开一个具体的Entity或者Domain对象(这里没用到领域对象,领域对象与Entity相似)。这样设计的好处是:当我要更换一个Entity的时候,只需要从Action里去更改对应的Entity名字就可以了。
Dao层示例代码:
- public <T> void saveInfo(List<T> list)
- {
- Assert.notNull(list, "entity is required");
- for (T obj : list)
- {
- getSession().save(obj);
- }
- System.out.println("Function saveInfo has run");
- }
Action层对应代码:
- public class EmployeeAction extends BaseAction
- {
- private Logger log = LoggerFactory.getLogger(Employee.class); //log日志
- //调阅数据
- public void read()
- {
- String jsonStr = ajaxJson(service.find(Employee.class));
- }
- // 保存数据
- public void add()
- {
- String jsonStr = getJsonFromRequest();
- System.out.println("保存数据 Request" + jsonStr);
- List<Employee> empList = new ArrayList<Employee>();
- empList.add(getObjectFromJson(jsonStr, Employee.class));
- service.saveInfo(empList);
- }
- //更新数据
- public void update()
- {
- String jsonStr = getJsonFromRequest();
- System.out.println("更新数据 Request" + jsonStr);
- List<Employee> empList = new ArrayList<Employee>();
- empList.add(getObjectFromJson(jsonStr, Employee.class));
- service.updateInfo(empList);
- }
- //删除数据
- public void destroy()
- {
- String jsonStr = getJsonFromRequest();
- System.out.println("删除数据 Request" + jsonStr);
- List<Employee> empList = getListFromJson(jsonStr, Employee.class);
- service.delete(empList);
- }
- }
红色字体是耦合到的Entity,DAO的方法泛型设计方式让分支逻辑上的耦合度降到最低