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.
···
On Apr 25, 9:00 pm, Don French <dhf0...@gmail.com> wrote:
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?
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.
Don French
···
On Apr 25, 9:16 pm, Intransition <transf...@gmail.com> wrote:
On Apr 25, 9:00 pm, Don French <dhf0...@gmail.com> wrote:
> 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.
> 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.
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.
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)
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.
Kind regards
robert
···
2010/4/26 Don French <dhf0820@gmail.com>:
On Apr 25, 9:16 pm, Intransition <transf...@gmail.com> wrote:
On Apr 25, 9:00 pm, Don French <dhf0...@gmail.com> wrote:
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
···
On Apr 26, 9:02 am, Robert Klemme <shortcut...@googlemail.com> wrote:
2010/4/26 Don French <dhf0...@gmail.com>:
> On Apr 25, 9:16 pm, Intransition <transf...@gmail.com> wrote:
>> On Apr 25, 9:00 pm, Don French <dhf0...@gmail.com> wrote:
>> > 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.
> 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.
> 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)
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.
Kind regards
robert
--
remember.guy do |as, often| as.you_can - without endhttp://blog.rubybestpractices.com/