In the case of SDO, it was just the logical pattern for implementation
hiding.

The implementation was fine up to the point where we wanted to start
thinking about
the static SDO api, and were proposing to allow code generators to inherit
from some DataObject base class and add their own methods such as
"getName()" etc.

We cant do that with DataObject, as all the DataObject pointers given out
are really
DataObjectImpls. The prototype code I put in the test directory uses
containment instead
of inheritance to allow a MyDataObject to contain a reference to a
DataObject, and delegate
its DataObjectish behaviour.

cheers,
Ed.

On 11/08/06, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:

I noticed two different patterns in the definition of the public SCA and
SDO API classes.

SCA:
A delegation pattern where the public API class delegates calls to an
implementation class.
For example ComponentContext contains a private pointer to
ComponentContextImpl. ComponentContextImpl implements the methods from
ComponentContext but does not extend ComponentContext.

SDO:
Inheritance, where the implementation class extends the public API class.
For example DataFactoryImpl extends DataFactory.

Is there any particular reason for the two different patterns? Any
advantages or issues with one compared the other?

A related question. What do you think about reorganizing the folder
structure a little to clearly separate the spec includes from the
implementation specific ones?

--
Jean-Sebastien


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to