I have an application where multiple objects are created processing
different sets of data based upon a configuration specified. Each
object uses several other objects but those objects must use the
configuration initially set up in the first primary object. Each of
the primary objects maintain their own configuration.
How can you have variables defined in the primary object that are
visible to the other objects it creates?
I have an application where multiple objects are created processing
different sets of data based upon a configuration specified. Each
object uses several other objects but those objects must use the
configuration initially set up in the first primary object. Each of
the primary objects maintain their own configuration.
How can you have variables defined in the primary object that are
visible to the other objects it creates?
Well, we would need to know more to be sure. But one possibility is to
pass a reference to the primary object to all subsequent objects.
Well, we would need to know more to be sure. But one possibility is to
pass a reference to the primary object to all subsequent objects.
That is an option but I hate to pass around that to every object.
class Driver
def initialize
live_data_handler = Handler.new(‘live’)
test_data_handler = Handler.new(‘test’)
end
def handle_command
do
command, data = queuemanager.wait
case command
when ‘processlive’
live_data_handler.handle(data)
when ‘processtest’
live_data_handler.handle(data)
end
until command == ‘quit’
end
end
class Handler
def initialize(config) @config = getconfig(config) @otherconfiginfo = other
end
def handle(data)
lots_of_different_objects_created(data)
end
end
this is an example of the structure. same handler code but config
determines what to do and how.
Well, we would need to know more to be sure. But one possibility is to
pass a reference to the primary object to all subsequent objects.
That is an option but I hate to pass around that to every object.
You might hate it initially but you’ll be glad when coming back to the
code months later for maintenance. Using global variables of any form
makes code a) harder to read and understand and b) less flexible
(because you are bound to that exact global variable). Explicit
passing of data is the better alternative most of the time. You can
still organize it in a way that it’s not too much typing overhead.
when 'processlive'
live_data_handler.handle(data)
when 'processtest'
live_data_handler.handle(data)
Shouldn’t that read
test_data_handler.handle(data)
?
end
until command == ‘quit’
end
end
class Handler
def initialize(config) @config = getconfig(config) @otherconfiginfo = other
Where do you get that “other” from?
end
def handle(data)
lots_of_different_objects_created(data)
end
end
this is an example of the structure. same handler code but config
determines what to do and how.
configuration initially set up in the first primary object. Each of
You might hate it initially but you’ll be glad when coming back to the
end
Shouldn’t that read
class Handler
end
remember.guy do |as, often| as.you_can - without endhttp://blog.rubybestpractices.com/
Thanks. Looks like I will just create a configuration object and pass
it around.
Other is just a place holder instead of showing more of the code.
There are lots of config things that are initialized.
Don Frenc
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.