require "objectteam"
require "../../simple/counter"
#create 2 instances of Simple.
e = Simple.new("earth")
m = Simple.new("mars")
#create connector with applied block to see, which role gets created.
countteam = CountHello.new() { |base, roleclass|
puts "create role for #{base.to_s}\n"
roleclass.new #return a new roleclass
}
#activate connector
countteam.while_active {
puts "\nconnectors default: not weak ============\n"
#the call to hello will create a role object
e.hello
#make the connector weak.
#The connector no longer creates new roleobjects. Existing roleobjects can be used anyway.
countteam.weak = true
puts "\nconnector is weak =======================\n"
#this should count the call to hello, because there is already a role applied.
e.hello
#this invocation does not reach the role - because the role is not created.
m.hello
#make connector "strong".
countteam.weak = false
puts "\nconnector is no longer weak =============\n"
#now a role gets created:
m.hello
}
syntax highlighted by Code2HTML, v. 0.9.1