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/
>>
> 
> 
> 

Reply via email to