Value Object Pattern - PowerPoint PPT Presentation

1 / 23
About This Presentation
Title:

Value Object Pattern

Description:

Mintao Si (mtsi06_at_yahoo.com) 8/20/09. Mintao Si. 2. Content. Problem. Forces. Solution. Structure ... Mintao Si. 3. Problem. Context: Application clients need ... – PowerPoint PPT presentation

Number of Views:22
Avg rating:3.0/5.0
Slides: 24
Provided by: dev122
Category:
Tags: object | pattern | value

less

Transcript and Presenter's Notes

Title: Value Object Pattern


1
Value Object Pattern
  • by
  • Mintao Si (mtsi06_at_yahoo.com)

2
Content
  • Problem
  • Forces
  • Solution
  • Structure
  • Strategy
  • Consequences

3
Problem
  • Context Application clients need to exchange
    data with enterprise beans.
  • J2EE enterprise beans include session beans and
    entity beans.
  • Session beans may provide coarse-grained service
    methods which may return data to the client. In
    such cases, the client must invoke the session
    bean's get methods multiple times until the
    client obtains values for all the attribute
    values.
  • An entity bean exposes the values of its
    attributes by providing an getter for each
    attribute. When a client needs the data values
    from an entity bean, it may invoke the entity
    bean's get methods multiple times until the
    client obtains data for every attribute that it
    needs.
  • Every such method call made to the enterprise
    bean is potentially remote and multiple remote
    method invocation may significantly degrade the
    application performance.

4
Problem
  • Clients make numerous remote procedure calls to
    obtain required data

Enterprise bean
Request Attribute A
Attribute A,B,C,D getA() getB() getC() getD()
Request Attribute B
client
Request Attribute C
Request Attribute D
5
Forces
  • J2EE applications implement business components
    as enterprise bean components. All access to an
    enterprise bean is performed via remote
    interfaces to the bean. Every call to an
    enterprise bean is potentially a remote method
    call with network overhead.
  • Typically, applications have a greater frequency
    of read transactions than update transactions.
    The client requires the data from the business
    tier for presentation, display, and other
    read-only types of processing.
  • The client usually requires more than one
    attribute value of an enterprise bean. Thus, the
    client may invoke multiple remote calls to obtain
    the required data.
  • The number of calls made by the client to the
    enterprise bean impacts network performance.
    Chattier applications-those with increased
    traffic between client and server tiers-often
    degrade network performance.

6
Solution
  • Use a Value Object to encapsulate the business
    data. When a client requests an enterprise bean
    for business data, the enterprise bean can
    construct a Value Object, populate it with its
    attribute values, and pass it by value to the
    client.
  • Using value objects can reduce remote procedure
    call and therefore reduce network overhead.
  • When an enterprise bean uses a value object, the
    client makes a single remote method invocation to
    the enterprise bean to request the value object
    instead of many remote method calls to get
    individual attribute values one at a time.
  • The client receives a value object and access
    the attribute values locally.

7
Structure
8
Strcuture
  • Client
  • This represents the client of the enterprise
    bean.
  • BusinessObject
  • The BusinessObject represents a role in this
    pattern that can be fulfilled by a session bean
    or an entity bean. The BusinessObject is
    responsible for creating the value object and
    returning the ValueObject to the client. The
    BusinessObject receives the data request from the
    client and creates a new ValueObject.
  • ValueObject
  • The ValueObject is an arbitrary Java object. The
    ValueObject may provide a constructor that
    accepts all the required attributes to create the
    value object. The constructor may accept all
    entity bean attribute values that the value
    object is designed to hold. It is a design choice
    as to whether the ValueObject attributes are
    private and accessed via getters, or all the
    attributes are made public. Normally, there is no
    setter in a ValueObject and it is not modifiable
    after its creation.

9
Strcuture
  • public class ContactVO implements
    java.io.Serializable
  • // public memberspublic String firstName
    public String lastName public String address
  • // constructor accepting all valuespublic
    ContactVO(String firstName, String lastName,
    String address)init(firstName, lastName,
    address)
  • // method to set all the valuespublic void
    init(String firstName, String lastName, String
    address) this.firstName firstName
    this.lastName lastName this.address
    address

10
Interaction
11
Strategies
  • Updateable Value Object
  • can carry the changes required by the client
    back to the entity.
  • Multiple Value Objects
  • can produce different value objects depending on
    the client request.
  • Entity Inherits Value Object (for entity beans
    only)
  • use inheritance, since the entity bean
    attributes and the value object attributes are
    identical.
  • Value Objects Factory (for entity beans only)
  • create value objects on demand using reflection

12
Updatable Value Object
13
Updatable Value Object
14
Multiple Value Objects
15
Multiple Value Objects
16
Entity Inherits Value Object
17
Entity Inherits Value Object
18
Entity Inherits Value Object
  • public class ContactVO implements
    java.io.Serializable
  • // public memberspublic String firstName
    public String lastName public String address
  • // create a new value object public ContactVO
    getData() return new ContactVO(this)
  • public class ContactEntity extends ContactVO
    implements javax.ejb.EntityBean
  • ...
  • // the client calls the getData method//
    getData() is inherited from the Value Object...

19
Value Objects Factory
20
Value Objects Factory
21
Consequences
  • Simplifies Entity Bean and Remote Interface
  • Reduces Network Traffic
  • Update Propagation and Stale Value Objects
  • Synchronization and Version Control
  • Reduced Code duplication
  • Number of calls vs. amount of data shipped
  • Concurrent Access and Transactions

22
Related patterns
  • Session Façade
  • Value Object Assembler
  • Value List Handler
  • Aggregate Entity

23
Thats all folks!
  • ?????
Write a Comment
User Comments (0)
About PowerShow.com