调用不同类的公共方法的ruby私有方法
允许ruby中调用不同类的公共方法的ruby私有方法,ruby,oop,Ruby,Oop,允许ruby中类a中的私有方法调用类B中的公共方法被认为是一种好的设计吗 我想更好的方法是在类a中调用另一个public方法,它将调用类B中的public方法 考虑这样一种情况:用户需要对资源采取行动(私有方法),但如果不检查资源的某些约束(通过公共方法),就无法这样做。我不知道您想要的确切函数是什么,但允许ruby中类a中的私有方法调用类B中的公共方法是没有问题的,如代码所示: class A private def test_a B.new.test_b end e
类a
中的私有方法调用类B
中的公共方法被认为是一种好的设计吗
我想更好的方法是在类a
中调用另一个public方法,它将调用类B
中的public方法
考虑这样一种情况:用户需要对资源采取行动(私有方法),但如果不检查资源的某些约束(通过公共方法),就无法这样做。我不知道您想要的确切函数是什么,但允许ruby中类a中的私有方法调用类B中的公共方法是没有问题的,如代码所示: class A private def test_a B.new.test_b end end class B def test_b puts 'test_b' end end A.new.send(:test_a) #=>test_b 甲级 私有的 def测试a 新测试 结束 结束 B类 def测试单元b “测试b” 结束 结束 A.new.send(:test_A)#=>test_b
我不知道您想要的确切函数是什么,但允许ruby中类a中的私有方法调用类B中的公共方法是没有问题的,如下代码所示: class A private def test_a B.new.test_b end end class B def test_b puts 'test_b' end end A.new.send(:test_a) #=>test_b 甲级 私有的 def测试a 新测试 结束 结束 B类 def测试单元b “测试b” 结束 结束 A.new.send(:test_A)#=>test_b
我认为创建一个公共方法来访问其他类的公共方法不是一个好方法。你会被你班上太多的公共方法弄得不知所措 因为Ruby是纯面向对象的,所有东西都是面向对象的。如果你记住了这种方法,你最终会得到不必要的方法。即使你在用你的私人方法做一些简单的事情。假设您正在尝试使用
每个
方法迭代一个数组。您会考虑创建一个公共方法来首先访问公共方法<代码>类数组的每个< /代码>吗?答案是否定的
ruby也是一种富有表现力和生产力的语言。用ruby编写的代码越少越好。我认为创建一个公共方法来访问其他类的公共方法不是一个好方法。你会被你班上太多的公共方法弄得不知所措 因为Ruby是纯面向对象的,所有东西都是面向对象的。如果你记住了这种方法,你最终会得到不必要的方法。即使你在用你的私人方法做一些简单的事情。假设您正在尝试使用
每个
方法迭代一个数组。您会考虑创建一个公共方法来首先访问公共方法<代码>类数组的每个< /代码>吗?答案是否定的
ruby也是一种富有表现力和生产力的语言。在ruby中,您可以用更少的代码做更多的事情
允许在中的类a中使用私有方法被认为是一种好的设计吗
ruby调用类B中的公共方法
无论您是从公共方法还是从私有方法调用外部类,这都无关紧要,因为私有方法是一个实现细节。重要的是给定类了解外部类的方法是否有意义
考虑这样一种情况:用户需要对资源采取行动(私有方法),但如果不检查资源的某些约束(通过公共方法),就无法这样做
考虑到你的评论:
如果用户想要进入房子,他需要检查房子是否安全
一种可能的实施方式是:
class User
def enter(house)
if house.safe?
house.users << user
end
end
end
现在,这两个类之间的耦合已经减少。作为safe?
约束的所有者,House
控制是否允许用户进入,而User
仍然对House
的实现一无所知
根据所讨论的领域,安全声明可能属于除房屋
或用户
以外的类别,例如警卫
。在这种情况下,您可能会得到如下结果:
class Guard
def facilitate_entry(user, house)
house.enter_by(user) if safe?(house)
end
private
def safe?(house)
end
end
允许在中的类a中使用私有方法被认为是一种好的设计吗
ruby调用类B中的公共方法
无论您是从公共方法还是从私有方法调用外部类,这都无关紧要,因为私有方法是一个实现细节。重要的是给定类了解外部类的方法是否有意义
考虑这样一种情况:用户需要对资源采取行动(私有方法),但如果不检查资源的某些约束(通过公共方法),就无法这样做
考虑到你的评论:
如果用户想要进入房子,他需要检查房子是否安全
一种可能的实施方式是:
class User
def enter(house)
if house.safe?
house.users << user
end
end
end
现在,这两个类之间的耦合已经减少。作为safe?
约束的所有者,House
控制是否允许用户进入,而User
仍然对House
的实现一无所知
根据所讨论的领域,安全声明可能属于除房屋
或用户
以外的类别,例如警卫
。在这种情况下,您可能会得到如下结果:
class Guard
def facilitate_entry(user, house)
house.enter_by(user) if safe?(house)
end
private
def safe?(house)
end
end
什么是层次关系…?tbh目前没有任何关系,它可以是一个
用户
类和一个房屋
类,如果用户想进入房屋,他需要检查房屋是否安全…我只是大声想举个例子。@Subash你能给出一个实际的例子吗,例如,两个Ruby类(House
和User
)包含有意义的公共和私有方法?什么是层次关系…?tbh目前没有任何关系,它可能类似于User
类和House
类,如果用户想进入房子,他需要检查房子是否安全……我只是大声想举个例子。@Subash你能举个实际的例子吗,即两个Ruby类(house
和user
),包含有意义的公共和私有方法?嗨@Tsao,我知道可以这样做,我关心的是好的设计和质量