我现在有一个小麻烦,管理我的依赖,同时试图保持单一的责任和良好的发展。
我有一个主课呼叫菜单:
class Menu
def initialize(dishes:, prices:, menuFormatter:)
@dishes = dishes
@prices = prices
@menuFormatter = menuFormatter
end
def avaliable_dishes
dishes.dishes_list
end
def dish_prices
prices.prices_list
end
def formatted_menu
menuFormatter.formatted_menu
end
private
attr_reader :dishes, :prices, :menuFormatter
end
现在,我看到的是menu类将菜单的所有不同部分组合在一起,并将其提供给假设的客户。菜是在自己的类(菜)中处理、更新、移除的,价格是以同样的方式(价格)完成的,然后有一个单独的类菜单编制者,其职责是将菜单的内容转化为一个精心安排的菜单。第17到19行是调用MenuFormatter类的地方,但我的问题出现在该类中:
class MenuFormatter
def avaliable_dishes
menu.avaliable_dishes
end
def dish_prices
menu.dish_prices
end
def format_menu
#Loop through dishes and prices and arrange them.
end
end
我现在面临的错误是MenuFormatter不知道菜单是什么,因为我没有在类中定义它我不确定如何使我的菜单变量指向菜单实例,以便它能够访问菜肴和价格。
我希望不要让menuformatter访问菜肴或价格,因为我觉得这可能导致在我的代码中不必要的进一步耦合。
最佳答案
如何将menu
本身的实例作为参数传递给format_menu
方法:
def formatted_menu
menuFormatter.formatted_menu(self)
end
这里,在
Menu
类的实例方法的定义中,self
指的是调用formatted_menu
方法的菜单实例。然后在
MenuFormatter
中:def formatted_menu(menu)
# menu.dishes...
# menu.prices....
end
关于ruby - 两个Ruby类相互依赖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37507880/