From: www.itworld.com

Assembling Values into Composite Objects, Part 2

by David Wall

July 22, 2002 —

 

Last time, we had a look at the design advantages associated with a
software pattern called a value object aggregator. You saw how to create
a class of the sort we'll want to assemble into a composite object, for
the purpose of calculating corporate earnings in the case of our
example.

Before we create an aggregate value object, we can create intermediate
value objects that combine still smaller granules of information. Such a
class might look like this:

public class ExpenseDetailsData {
public ExpenseVO expenseData;
public TaxVO taxData;;
}

Then, having created a series of value objects, some of which represent
individual pieces of data and some of which stand for composites of
data, we can assemble everything into a "grand total" object that
aggregates everything:

public class EarningsDetailsAssembler
implements javax.ejb.SessionBean {

// Code that establishes properties representing individual value
objects.

earningsData.taxData = taxVO;
earningsData.expenseData = expenseVO;
earningsData.amortizationData = amortizationVO;

// And so on...

return earningsData;

}

The value aggregator here provides all the information we need to
calculate earnings in one object. It's a simple matter for a calculation
object to refer to the EarningsDetailsAssembler when it's time to do the
figuring on behalf of a client application.