Как правильно моделировать объекты, с которыми я работаюJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как правильно моделировать объекты, с которыми я работаю

Сообщение Anonymous »

Я разрабатываю приложение, которое, среди прочего, определяет следующие сущности:
Существует базовый класс под названием «Действие» со следующими наследниками:SimpleAction1, SimpleAction2 , BaseComplexAction.
BaseComplexAction наследуется от ComplexAction1, ComplexAction2
Затем есть универсальный интерфейс под названием «Техника», чей общий тип может быть любым классом в иерархии «Действие».
«Техника» определяет два метода:
getActions (), который возвращает конкретный подтип «Действия», и matchAction(), который возвращает логическое значение.
matchesAction() должен сообщать, могло ли определенное действие быть сгенерировано конкретной реализацией «Техники».
Для справки я добавлю несколько примеров реализации приведенных выше классов на Java:

Код: Выделить всё

interface Technique {
T getActions();
boolean matchesAction(T action);
}

// Concrete Technique implementation
class MyTechnique implements Technique {
@Override
public BaseComplexAction getActions() {
// Logic to determine and return a specific ComplexAction
return new ComplexAction1();
}

@Override
public boolean matchesAction(BaseComplexAction action) {
// Logic to check if the action matches the technique's criteria
return action instanceof ComplexAction1;
}
}
Различные методы могут привести к одному и тому же конкретному типу действия.
При такой структуре у меня возникают проблемы:
  • Если кто-то хочет использовать метод match() для общего действия, необходимо сначала привести действие к правильному типу, поддерживаемому конкретным типом метода.
  • Вместо этого, если я удалю общий тип из определения Technique, конкретная техника должна будет проверить тип класса предоставленного общего действия, а затем привести его к конкретному подтипу, чтобы выполнить проверку.
Я бы хотел бы попросить совета о том, как улучшить определения моих классов, чтобы избежать приведения типов и сделать использование этих методов более плавным, если это возможно.
Я буду рад предоставить более подробную информацию, если это необходимо.

Подробнее здесь: https://stackoverflow.com/questions/792 ... rking-with
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»