new files
This commit is contained in:
parent
3af7344581
commit
86c034bb8b
1364 changed files with 21352 additions and 0 deletions
31
Task/Delegates/Ruby/delegates-1.rb
Normal file
31
Task/Delegates/Ruby/delegates-1.rb
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
class Delegator
|
||||
attr_accessor :delegate
|
||||
def operation
|
||||
if @delegate.respond_to?(:thing)
|
||||
@delegate.thing
|
||||
else
|
||||
'default implementation'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class Delegate
|
||||
def thing
|
||||
'delegate implementation'
|
||||
end
|
||||
end
|
||||
|
||||
if __FILE__ == $PROGRAM_NAME
|
||||
|
||||
# No delegate
|
||||
a = Delegator.new
|
||||
puts a.operation # prints "default implementation"
|
||||
|
||||
# With a delegate that does not implement "thing"
|
||||
a.delegate = 'A delegate may be any object'
|
||||
puts a.operation # prints "default implementation"
|
||||
|
||||
# With delegate that implements "thing"
|
||||
a.delegate = Delegate.new
|
||||
puts a.operation # prints "delegate implementation"
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue