PetBase を実装する Cat および Dog クラスがあるとします。そして、それぞれが Owner というオブジェクトを保持しています。そして Owner は Emotion というオブジェクトを保持しています。Cat または Dog のどちらに属しているかに基づいて、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 に渡すことができます)。 ()))。
デザインで何を変更する必要がありますか?
[編集]
それは Jordao の答えと DavidFrancis の答えの間のトスでした。最終的に、アプリのツリー構造の性質から、DavidFrancis のデザインを採用しました。