presentation & business tier design patterns
DESCRIPTION
Presentation & Business Tier Design Patterns. Pearce. Definitions. Pattern = reusable design Pattern Catalog = catalog of design patterns Horizontal Vertical Architectural pattern = Macro pattern = a composite pattern. Four Tier Architecture. Issues. - PowerPoint PPT PresentationTRANSCRIPT
Presentation & Business Tier Design Patterns
Pearce
Definitions
• Pattern = reusable design
• Pattern Catalog = catalog of design patterns– Horizontal– Vertical
• Architectural pattern = Macro pattern = a composite pattern
Four Tier Architecture
Client Tier
<<web browser>>
Presentation Tier
<<Web Server>>
Business Tier
<<App Server>>
Data Tier<<dbase server>>
HTTP
RMI
JDBC
JDBC
Issues
• Migrating Business Logic from Presentation to Business Tier
• Providing B2B Business Tier
The Model-View-Controller Macro Pattern
View Controller
Modelbusiness Tier
PresentationTier
MVC Variations
• Service to Worker
• View-Dispatcher
View-Dispatcher : Model : Controller : View : Client
dispatchfetch/update
content
command
Service to Worker : Model : Controller : View : Client
update/fetch
content
dispatch
content
command
Business Tier (Model) Patterns
• Entities
• Beans
• Value Objects
• Data Access Objects
• DAO Factories
• etc.
Entities
• An entity is an object that represents a persistent business entity such as an account or a customer.
• Entities must persist between the sessions or transactions that use them.
• Entities are stored in files or databases
• Entities are beans– Simple or EJB.
Java Beans
• A Java bean is an object that conforms to the Java Bean Component Model.– getters & setters for attributes– notifies listeners of attribute changes– serializable– etc.
Example: A Person Entity
public class Person extends Entity { private String first; private String last; private Address address; private Phone phone; public Phone getPhone() { return phone; } public void setPhone(Phone p) { phone = p; } // etc.}
Value Objects
• A value object holds the attributes of one or more entities in public fields.
• Pass value objects, not entities, between layers. This reduces network traffic.
• Value objects can update and create entities.
• Entities can create value objects.
public class PersonVO extends ValueObject { public String first; public String last; public int addressOid; public String street; public String apartment; public String city; public String state ; public String zip; public int phoneOid; public String phone; public void update(Person per) { ... } public Person makePerson() { ... }}
Example: Person VO
Entity
Phone
number
Address
streetapartmentcitystatezip
Person
lastfirst 1* 1*1 *1 *
ValueObject
oid : int
PersonVO
lastfirststreetapartmentcitystatezipaddressOidphonephoneOid
update()makePerson()
Bean<<serializable>>
Address Book
Entities
Data Access Objects (DAOs)
• A DAO represents a data source.
• DAOs are created by DAO factories.
• DAOs hide the complexities of connecting with the underlying data source.
Example: Person DAO
public interface PersonDAO { public int insert(PersonVO pvo) throws DAOException; public boolean delete(String name) throws DAOException; public PersonVO find(String name) throws DAOException; public boolean update(PersonVO pvo) throws DAOException;}
DAOFactory
makePersonDAO()makeDAOFactory()
PersonDAO<<Interface>>
insert()update()delete()find()
DBaseDAO
MapPersonDAO
MapDAOFactory
makePersonDAO()
<<creates>>
DBasePersonDAO
DBaseDAOFactory
makePersonDAO()
<<creates>>
DAOs & Factories
Presentation Tier Patterns(Controller and View)
• View
• View Helper
• Front Controller
Front Controller
• Single access point for all forms.
• May verify & validate request
• May analyzes request
• May assemble business data needed by view (Service-to-Worker)
• Selects and dispatches to view
View Helper
• Acts as intermediary between view and business tier
• Performs view-specific tasks
View
• Generates HTML response
• View may assemble the data it needs (Dispatcher-View)
• Needed data may be assembled by controller (Service-to-Worker)
• Provides utilities for generating HTML
Dispatcher-View Pattern
Helper
PersonHelperPersonDAO
<<Interface>>
1
1
1
1
DAOFactory
1
1
1
1
<<creates>>
View<<Servlet>>
requestresponseout
FrontController<<Servlet>>
processRequest()dispatch()
PersonView
11 11
dispatchesTo
: FrontController : PersonView : PersonHelper : DAOFactory : PersonDAO
container dispatch
creates
execute(cmmd)
makeDAO()
creates
cmmd
result
makeBody()
dispatch
makeBody()
execute(cmmd)
cmmd
result
GenericServlet
HttpServlet
doGet()doPost()doPut()doDelete()
ServletRequest<<Interface>>
getParameters()
HttpServletRequest<<Interface>>
ServletResponse<<Interface>>
HttpServletResponse<<Interface>>
ServletContainerServletConfig<<Interface>>Servlet
<<Interface>>
init()service()destroy()
*1 *1 11
View
getHelper()
RequestDispatcher<<Interface>>
forward()include()
PersonView
ServletContext<<Interface>>
getAttribute()setAttribute()getRequestDispatcher()
11
**
Helper*
typetype
*
PersonHelper
PersonDAO
Every Servlet has 3 AMaps
HttpServlet
ServletRequest<<Interface>>
getParameters()getAttribute()setAttribute()
HttpSession
getAttribute()setAttribute()
ServletContext<<Interface>>
getAttribute()setAttribute()getRequestDispatcher()
AMap
Map<<Interface>>