Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Inherit, Delegate, or Forwarding?
netghost
1/5/2006 6:10:00 PM
When do you guys choose to inherit from a class, use a delegate, or
forwarding?
What are some examples of common uses for Delegates or Forwardable?
I have these fuzzy notions of times they may be useful, but some common
examples would be nice.
Any thought?
.adam
For reference:
[Forwardable]
http://ruby-doc.org/stdlib/libdoc/forwardable/rdoc/...
[Delegate]
http://ruby-doc.org/stdlib/libdoc/delegate/rdoc/...
2 Answers
James Gray
1/5/2006 10:23:00 PM
0
On Jan 5, 2006, at 12:12 PM, Adam Sanderson wrote:
> When do you guys choose to inherit from a class, use a delegate, or
> forwarding?
As the saying goes, "Favor composition over inheritance." The theory
there is simply that inheritance is a tighter coupling than
composition, so the latter handles change better. Delegation is a
form of composition.
Any Design Patterns book will have a detailed treatment of this very
topic.
> What are some examples of common uses for Delegates or Forwardable?
Well, I wrote the documentation for both, and I must confess that I
still rarely use Delegate. It can think of one example where I
wanted full delegation and I wanted it for two classes, so I had to
roll my own anyway. The best example I can think of for it is
TempFile[1], in the standard library.
I use forwardable all the time, on the other hand. I love that
library. It allows me to control what gets delegated and rename
delegated methods. Good stuff. Two examples from my work would be
my solution-in-progress to the Ruby Test First Challenge[2] and my
FasterCSV library[3].
Hope that helps.
1:
http://stonecode.org:3000/article...
2:
http://groups.google.com/group/Ruby-Test-First-Chal...
1df37a6f0b781a88
3:
http://rubyforge.org/plugins/scmsvn/viewcvs.php/...
faster_csv.rb?root=fastercsv&view=markup
James Edward Gray II
Berger, Daniel
1/5/2006 10:58:00 PM
0
James Edward Gray II wrote:
> I use forwardable all the time, on the other hand. I love that
> library. It allows me to control what gets delegated and rename
> delegated methods. Good stuff. Two examples from my work would be my
> solution-in-progress to the Ruby Test First Challenge[2] and my
> FasterCSV library[3].
Note that, with some help, I revamped forwardable.rb and it has been
tentatively accepted by Matz for 2.0. The current version has lots of warning
spewage.
http://rubyforge.org/tracker/index.php?func=detail&aid=1923&group_id=426&...
Regards,
Dan
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Inherit, Delegate, or Forwarding?
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password