Если у меня есть класс Cat and Dog, реализующий PetBase. И каждый из них содержит объект с именем Owner. А Владелец держит объект под названием Эмоция. Как ограничить доступ к определенным свойствам, функциям или параметрам функций в классе Emotion в зависимости от того, принадлежит ли он кошке или собаке? Вот так:
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?
В этом примере я хочу запретить владельцам кошек передавать параметр в SetFearLevel(), но дать владельцам собак возможность бояться столько, сколько они хотят (т.е. иметь возможность передавать параметр в SetFearLevel()). ()).
Что мне нужно изменить в дизайне?
[ИЗМЕНИТЬ]
Это была жеребьевка между ответами Джордао и Дэвида Фрэнсиса. В конце концов, я остановился на дизайне Дэвида Фрэнсиса из-за древовидной структуры приложения.