2010-10-27 80 views
0

在开发Web应用程序的过程中,我们以模块化方式安排了一切,就像我们有我们的操作类一样,这些操作类负责与View业务组件以及持久性组件和每个组件经过很好的测试和正常工作。有关应用程序设计的一般问题

我的问题是什么是对操作组件与业务组件整合,使我们能够实现最大的灵活性,以及​​抽象的更高水平,以便今后任何对业务层的变化不应该强制使用在任何改变的最佳途径行动组件。

另请注意,我们根本不使用EJB。

回答

0

假设你的设计是这样的:

  1. Http请求传递到操作组件。
  2. 操作组件访问业务组件。
  3. 东西生成基于业务组件的视图组件。
  4. Http请求从Action Component传递给View(可能是JSP)。

如果希望操作组件对步骤3不可知,则使业务组件生成查看组件。这里是一个javaish,方法:

 

package some.model.package; 
class final ViewObject 
{ 
    private String something; 

    public ViewObject(final String something) 
    { 
     this.something = something; 
    } 

    private String getSomething() 
    { 
     return something; 
    } 
} 

interface Business 
{ 
    Object doBusinessStuff(... HttpServletRequest and other stuff...); 
} 

package some.model.package; 
class final BusinessObject 
implements Business 
{ 
    ... business stuff ... 

    private String determineSomethingValue() 
    { 
     String returnValue; 
     returnValue = ... determine the value of something ... 
     return returnValue; 
    } 

    private Object getViewObject() 
    { 
     ViewObject returnValue; 
     String somethingValue; 

     somethingValue = determineSomethingValue(); 

     returnValue = new ViewObject(somethingValue); 

     return returnValue; 
    } 

    Object doBusinessStuff(... HttpServletRequest and other stuff...) 
    { 
     ... do stuff based on inputs ... 
     return getViewObject(); 
    } 

} 

package some.control.package; 
class final ActionObject 
{ 
    public somehting processHttpRequest(HttpRequest request, ...other parameters...) 
    { 
     Business businessObject = ... get the business object from somewhere ... 
     Object viewObject; 

     viewObject = businessObject.doBusinessStuff(); 

     request.setAttribute("view object name", viewObject); 
    } 
} 

 
+0

在这种情况下,我再次暴露我的业务组件,以行动layer.It可能当完成一项任务,我有打电话给不同的业务服务,并在这种情况下,我不得不在Action层中公开所有这些业务服务 – 2010-10-27 16:58:26