I believe that Trustin's point is that the visitor pattern is only effective if you know all the visitable types ahead of time. It's quite difficult for a user to wedge in their own type after the fact - they would have to modify the visitor interface for each new transport type they add.
- DML Adam Fisk wrote: > I actually think that's exactly why the visitor pattern is nice -- the > more transports you have, the better it gets because you can elegantly > deal with the additional types rather than resorting to instansofs. > The double-dispatch method calling is also a bigger performance boost > the more types you have (as opposed to more "else if"s with the > instanceof approach). > > A visitor itself can also do all sorts of things other than just > identify the type. > > That said, it's really a cosmetic difference either way and barely > worth the discussion -- your time is certainly better spent elsewhere! > > -Adam > > > On Feb 13, 2008 11:58 AM, 이희승 (Trustin Lee) <[EMAIL PROTECTED]> wrote: >> I am not sure if it's a more flexible solution considering we are going >> to have more transports. For example, we have serial port communication >> transport, and we will have to add a visit method per each transport. >> >> Trustin >> >> 2008-02-13 (수), 09:58 -0500, Adam Fisk 쓰시길: >> >>> This would be a nice place for the good old visitor pattern, so >>> something like, in SocketSession, >>> >>> SocketSession implements VisitableSession >>> >>> ... >>> public void accept(final SessionVisitor visitor) >>> { >>> visitor.visitSocketSession(this); >>> } >>> >>> Then you have a lot of flexibility with the visitor itself to handle >>> types nicely. The SessionVisitor would be an interface like: >>> >>> public interface SessionVisitor >>> { >>> void visitSocketSocket(final SocketSession session); >>> void visitDatagramSession(final DatagramSession session); >>> } >>> >>> I'd be happy to make a patch along those lines if people were >>> interested. It would use generics for return types rather than the >>> above for slightly more flexibility. >>> >>> -Adam >>> >>> >>> On Feb 13, 2008 12:06 AM, 이희승 (Trustin Lee) <[EMAIL PROTECTED]> wrote: >>>> 2008-01-28 (월), 10:47 -0400, Brenno Hayden 쓰시길: >>>>> Hello , >>>>> i have same doubt.. >>>>> - How can I tell if the connection is udp or tcp? >>>> In 1.x, you can use IoSession.getTransportType(). In 2.x, you can >>>> simply use 'instanceof SocketSession' or 'instanceof DatagramSession'. >>>> >>>> -- >>>> what we call human nature is actually human habit >>>> -- >>>> http://gleamynode.net/ >>>> >>> >>> >> -- >> what we call human nature is actually human habit >> -- >> http://gleamynode.net/ >> > > >