From: Richard Kilmer Date: 2004-06-17T03:15:57+09:00 Subject: Re: how to design plugin functionality You could use modules: module SortedOutput def read @lines = File.readlines(@file).sort end end Then you can do: class MyFileOutputter def initialize(file) @file = file end def read @lines = File.readlines(@file) end def output(io=$stdout) read unless @lines @lines.each_with_index do |line, i| io.puts "#{i+1}. #{line}" end end end outputter = MyFileOutputter.new("myfile.txt") outputter.extend SortedOutput outputter.output I find mixing in Modules that replace methods on object instances pretty handy. -rich On 6/16/04 11:10 AM, "Florian Weber" wrote: > hi! > > i have a design question. for example i have a class which reads a file > and prints out each line with line numbers. what if now i wanna be able > to plugin some functionality which sorts the file, depending on some > conditions (extension, etc) before its passed on to the line numbering > functionality. the class should be as less tied as possible to the > sorting > functionality as possible.. > > how would you normally design that in ruby? > > would you just overwrite the method which calls the file read method > and passes it to the numbering method? > > would you pack an object in between, which would check if the file > has to be sorted, because the conditions are true, read the file and > the return the sorted or unsorted content? > > basically im wondering if its considered a good practice to overwrite > methods on the same class or if its kinda hackish.. =) > > thanks a lot! > > ciao! > florian > > > >