Я работаю над игрой, требующей действий разрешения в зависимости от объекта, с которым сталкивается шар.Object Specifc Behavior in a If
Много кода в методе разрешения применяется ко всем различным типам объектов, которые могут быть удалены, но некоторые из них также относятся к конкретному типу объекта.
Псевдокод выглядит следующим образом:
resolve (Object a) {
if (some test) {
if (Object a is rect) {
// do one thing
} else {
// do something else thing
} else if (another test) {
if (Object a is rect) {
// do one thing
} else {
// do something else thing
} else if (third test) {
if (Object a is rect) {
// do one thing
} else {
// do something else thing
}
}
Однако для новичка, это чувствует рода суматоху (из-за испытаний для типа объекта в пределах каждого, если условие), но я не могу достаточно выяснить, как его улучшить? Я мог бы переопределить метод и иметь поведение, основанное на подклассе, который ему передается, но затем я получаю много одинакового кода в обоих методах.
Этот метод проверяет текущее местоположение шара (сверху, снизу и т. Д.) И соответственно регулирует скорость шаров. Если объект представляет собой прямоугольник, новая скорость отличается от круга.
Может ли кто-нибудь помочь?
просто уточните, вы пишете ту же логику в случае, если и еще часть там три раза? – Jayy