作者:欧宣修
图文并茂版请参考
http://www.javatwo.net/JavaPaper/Petstore-3_business_logic.pdf
前言
透过前面的介绍,我们能够了解Petstore中Model、Controller、View是如何相互合作,现在让笔者来说明Petstore商业逻辑(Business Logic)的处理方式,首先让我们先了解为什么要将商业逻辑与资料展现(Presentation)分开,如此做有下列的好处:
1.减少程序变动的冲击:商业逻辑及资料展现彼此独立,不因商业逻辑改变而影响资料展现的程序代码,反之亦然。
2.易于维护:将商业逻辑集中管理,一旦日后有修改,仅须修改一个地方。
3.重复使用:商业逻辑若与资料展现层程序混在一起,如此商业逻辑只能服务一种使用者接口(Client),若将两者分离,我们可以很容易扩充第二种使用者接口。
4.各司其职:资料展现的设计人员与商业逻辑的设计人员通常是不一样的,彼此独立让术业有专攻,品质及效率皆能提升。
隐形角色
在追纵Petstore商业逻辑处理方式前,我们先来看看Petstore中的隐形角色,这些隐形角色在服务器(RI)激活时即默默准备好,待适当时机为Petstore中商业逻辑处理服务,所以笔者须先介绍它们。
Petstore_home(注一)\src\apps\petstore\src\docroot\WEB-INF\web.xml,
我们可以看到:
<!-- Encoding Filter Declaration Start -->
<filter> //1.第一个Fliter
<filter-name>EncodingFilter</filter-name>
<display-name>EncodingFilter</display-name>
<description>no description</description>
<filter-class>com.sun.j2ee.blueprints.encodingfilter.web.EncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!-- Encoding Filter Declaration End -->
<!-- Signon Filter Declaration Start -->
<filter> //2.第二个Filter
<filter-name>SignOnFilter</filter-name>
<display-name>SignOnFilter</display-name>
<description>no description</description>
<filter-class>com.sun.j2ee.blueprints.signon.web.SignOnFilter</filter-class>
</filter>
<!-- Signon Filter Declaration End -->
<!-- Encoding Filter Mapping Start-->
<filter-mapping> //第一个Filter对应
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Encoding Filter Mapping End -->
<!-- Signon Filter Mapping Start-->
<filter-mapping> //第二个Filter对应
<filter-name>SignOnFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Signon Filter Mapping End -->
<!-- ComponentManager Listener -->
<listener> //3.第一个Listerner
<listener-class>com.sun.j2ee.blueprints.petstore.controller.web.PetstoreComponentManager</listener-class>
</listener>
<!-- SignOn Attribute Listener -->
<listener> //4.
上一页 下一页






