Подтвердить что ты не робот

Способ реализации частичных классов в java

У меня есть интерфейс, который я хочу реализовать в отдельных классах после быстрого поиска Google, Java не имеет частичных классов. Есть ли способ, которым я могу это сделать, или я застреваю, бросая весь мой код в один класс?

В основном, я пытаюсь написать службу. Некоторые из методов обслуживания действительно принадлежат к их собственному классу и кажутся нелогичными в том же классе. Вот пример того, что я пытаюсь сделать.

package com.upmc.esdm.messaging.epcd.service;
import java.util.List;

import javax.ejb.Remote;

import com.upmc.esdm.messaging.epcd13jpa.entities.EmailDomainTrust;


@Remote
public interface MessagingInterfaceRemote {
public List<EmailDomainTrust> getEmailDomains();

    public int upDateQualityTable();

    public string isLogial();

    public byte[] ToWritePartialClassesInJava();
}

Обычно у меня были частичные классы в С#, и я бы поставил похожие методы, которые возвращают похожие значения в один неполный класс (или, возможно, классы, которые обновляют запись в одном классе). Как бы это реализовать? Или я должен просто поместить все реализации метода в один класс?

Спасибо.

4b9b3361

Ответ 1

В Java нет ничего похожего на частичные классы. Вы можете достичь многих из тех же преимуществ, используя агрегирование, делегирование и абстрактные базовые классы.

(Я уклонился от давления со стороны сверстников и исключил "благодарное" замечание, которое вызвало столько жары в комментариях. Очевидно, что немного в стороне, похоже, заработало мне четыре downvotes, несмотря на то, что они не имеют отношения к ответу.)суб >

Ответ 2

Aspectj может быть ответом на функцию С#/.NET partial class! Spring Roo является одной из типичных рамок разработки с использованием aspectj для разделения функциональных возможностей класса на несколько разных файлов.

Ответ 3

Прежде чем идти по этому маршруту, вы можете рассмотреть шаблон дизайна Builder. Это позволяет вашей службе агрегировать реализации, реализованные в отдельных классах. Нет необходимости в предварительном компиляторе и очень чист с точки зрения OO.

Каждый класс компонента имеет определенную узкую ответственность, а класс обслуживания заворачивает службы его классов компонентов для выполнения только ответственности службы.

Если вы действительно хотите (не рекомендуется), вы можете использовать предварительный процессор для сборки частей класса до компиляции.

Единственным сценарием, который может иметь смысл для предварительного процессора, является то, что некоторые из ваших реализаций генерируются кодом, а другие части кодируются вручную. Прямым подходом может быть #include внешние фрагменты класса в основном файле .java и запустить предварительный процессор C перед файлом перед компиляцией.

Ответ 4

Вы можете объявлять методы через несколько интерфейсов, а затем позволить вашим конкретным классам реализовывать несколько интерфейсов.

Более того, используя java.lang.Proxy, вы можете собрать свою услугу с нескольких интерфейсов и делегировать вызовы фактических методов в отдельную реализацию.

Ответ 5

Я ненавижу поднимать старую ветку, но думал, что привнесу новую перспективу в отношении данных ответов. Аспектно-ориентированное программирование может лучше достичь того, что вы пытаетесь реализовать сквозными задачами.

Вы ищете надежное ассоциативное решение, в котором вы можете проанализировать детали реализации различных методов управления. Среда Spring очень заметна в этом пространстве и часто ассоциируется с микро-сервисами в наши дни.