Presentation & Business Tier Design Patterns

Preview:

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 Presentation

Citation preview

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>>

Recommended