> LçÉettçËäº Edgardo Hames <ehames / gmail.com> > Aihe: "Duck Typing" or "No need for abstract classes" > > Hi, you all. > > I'm working on a new small project where several network protocols are > to be supported. I had an idea about how to implement it and it > resembled something like this. > > class Protocol > abstract :login, :logout, :send, :receive > end > > class MyProtocol < Protocol > def login > # does something useful > end > ... # so on > end > > Then my network client would just call the methods of a Protocol > object without caring about the actual classes that implement it (yes, > you're right, I come from a static typing background). But then I read > something (I don't remember where :( ) which said that agile languages > don't need to implement so many patterns and I think I saw the light! > > I don't need a Protocol class, the network client should just call the > methods of the protocol and duck typing should do all the magic. Am I > right? Am I coming a little closer to walking the Ruby Way? > > Please, post a positive reply and you just may save me a couple of > therapy sessions :P Yep, you're right. It doesn't matter what the type of an object you have as long as it responds to the method you're trying to invoke. If it walks like a... > Kind Regards, > Ed E P.S. Object#respond_to? is a good method to keep in mind.