如果我有一个实现 PetBase 的 Cat 和 Dog 类。他们每个人都持有一个名为 Owner 的对象。Owner 持有一个名为 Emotion 的对象。我将如何根据 Emotion 类是属于 Cat 还是 Dog 来限制访问某些属性或函数或函数参数?像这样:
Dog d = new Dog();
d.Owner.Emotion.SetFearLevel(10); // dog owners can have a fear level from 1-10 so let the user decide.
Cat c = new Cat();
c.Owner.Emotion.SetFearLevel(); // all cat owners have the same fear level so I don't want the user to be able to pass in a parameter but still be able to call SetFearLevel(). How do I enforce this?
在这个例子中,我想限制 Cat 主人不能将参数传递给 SetFearLevel(),但要让 Dog 主人可以灵活地根据自己的意愿害怕(即能够将参数传递给 SetFearLevel ())。
我必须在设计中改变什么?
[编辑]
这是 Jordao 和 DavidFrancis 的答案之间的折腾。最后,由于应用程序的树结构性质,我选择了 DavidFrancis 的设计。