Java: Как связать методы нескольких классов в один объект? - PullRequest
1 голос
/ 22 января 2020

Я написал клиентское приложение, которое имеет:

  • Типы и методы данных управления сеансами (createSession(), connect(), disconnect(), et c ...)
  • Domain-Specifi c -языковые методы для работы с объектами, обрабатываемыми сервером (createVM(), startVM(), et c ...)
  • Локальная подготовка данных (formatDataForVmTypeA(), extractValueFromResponse(), et c ...)

Моя проблема в том, что все это в одном классе: OldStyleClient

A. Это слишком много кода для одного файла - мне сложно что-то находить, хотя я и написал все там Б. Я хочу поднять часть кода в его собственный объект, чтобы я мог выполнять некоторые ОО-операции в инкапсулированной части Клиент.

В своем сумасшедшем воображении я хотел бы иметь возможность сделать что-то вроде этого:

import ClientSession;  // Backbone of the client data and methods (session handling, etc...)
import ClientDSL;      // contains doThis(); method
import ClientChecks;   // contains checkRC(); method

ClientSession currentSession = new ClientSession();
currentSession.doThis();
currentSession.checkRC();

Я слышал, что могу использовать интерфейсы для достижения много-к-одному наследование, но я думаю, что интерфейсы - не лучшая ставка для меня: их главная цель, кажется, заключается в том, чтобы создавать контракты на уровне кода, когда программисты пишут класс, который должен общаться с другим классом, а множественное наследование является просто побочным эффектом.

Есть ли способ как-то сказать Java что-то вроде: «Я хочу, чтобы методы из ClientDSL были применимы к объектам« ClientSession »?

Кроме того, как правильно назвать проблему Я пытаюсь решить (для того чтобы лучше искать решения)?

1 Ответ

0 голосов
/ 22 января 2020

Вы можете использовать интерфейсы (чтобы вы могли реализовать более одного!) И методы по умолчанию (Java 8 и далее), чтобы вам не пришлось реализовывать методы в классе, который реализует им.

...