Re: latest DOM spec 19980720

Ted Bashor <bashor@crossroute.com> writes:

> I wouldn't say that having to update a factory class (Document) to
> accommodate a new subclass violates OO principles to the same degree as
> having to update a base class to accommodate a new subclass.

There are many who would say that it's the cast operator that violates OO
principles, and many others who would say it's a bad idea to migrate
operations (like getAttributes) into a base class in order to avoid it.

I've actually been down that route; an earlier version of our software had a
single Node-like class that could represent any SGML object.  The DOM seems
to be moving in that direction, come to think of it.  I believe it may be
possible at this point to represent an entire document using only an
implementation of Node, with the "attributes" attribute containing any
subclass-specific attributes (in the IDL sense).

There's still a certain amount of merit to such an approach; it essentially
lets you emulate the kind of weakly-typed language (like Lisp or Smalltalk)
that SGML systems have traditionally been built with.

The correct solution to the casting problem is probably to put all the
implementation-specific knowledge into specialized iterators (which can be
built knowing the implementation classes rather than just the interfaces).
Oh, well; that's exactly the course I took about a month ago.  My version of
a NodeIterator has a ``current Node'' and methods that return it as any of
the relevant subtypes.

-- 
 Stephen R. Savitzky   Chief Software Scientist, Ricoh Silicon Valley, Inc., 
<steve@rsv.ricoh.com>                            California Research Center
 voice: 650.496.5710   fax: 650.854.8740    URL: http://rsv.ricoh.com/~steve/
  home: <steve@starport.com> URL: http://www.starport.com/people/steve/

Received on Tuesday, 21 July 1998 19:05:52 UTC