5. example
class Train
attr_accessor :food_service, :drink_service
def initialize(food_service, drink_service)
@food_service = food_service
@drink_service = drink_service
end
def serve(customer = Customer.new)
customer.eat(food_service.make_food)
customer.drink(drink_service.make_drink)
customer.sleep
end
end
6. example
class Train
attr_accessor :food_service, :drink_service
def initialize(food_service, drink_service)
@food_service = food_service
@drink_service = drink_service
end
def serve(customer = Customer.new)
customer.eat(food_service.make_food)
customer.drink(drink_service.make_drink)
customer.sleep
end
end
Train depends on
food service and
drink service
Train depends
on customer
12. Another DI approach (not ruby
way):
- Use DI framework
- define dependencies in configuration
file
- found https://github.com/
dsawardekar/encase
Point: is it really needed??