- From: Stephen R. Savitzky <steve@crc.ricoh.com>
- Date: 21 Jul 1998 17:47:11 -0700
- To: Michael Allen <Michael.R.Allen@Eng.Sun.COM>
- Cc: www-dom@w3.org
Michael Allen <Michael.R.Allen@Eng.Sun.COM> writes:
> With all this talk of quickly casting to subclasses from a base
> class reference, I wonder if anyone has ever thought of putting Visitor
> design pattern functionality into Node? I have also heard the Visitor
> pattern referred to as "double dispatch".
[excellent discussion of the pattern snipped. See also p. 331 in the Gang
of Four book]
<hit target=forehead implement=hand>of course!</hit>
It still has the problem of having to be extended whenever you add a
subclass to Node, but at least it's better than adding conversion methods to
Node. Something like the HTMLNodeVisitor could get pretty ugly.
> To avoid type checking what kind of NodeVisitor a Node has received,
> you might make NodeVisitor an abstract base class with an Enumerated type
> field which contains an int (or bitfield, maybe) which specifies its type.
> That way, subclasses which the base NodeVisitor doesn't cover could check
> the type of visitors without doing an instanceof test.
I think it would be better to extend NodeVisitor at the same time as you
specialize Node (which, by the way, I notice that the HTML application
doesn't do -- that's a problem):
interface HTMLNode: Node {
readonly attribute HTMLNode parentHTMLNode;
...
void visit(in HTMLVisitor v)
}
> Throwing my hat in the ring,
Nice hat.
--
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 20:43:01 UTC