Как динамически расширить родительский класс diff? - PullRequest
0 голосов
/ 18 марта 2020

Теперь есть супер BaseService, и у него есть два дочерних класса: CompanyService, PersonService

BaseService (Abstract):
    - CompanyService
    - PersonService

Теперь возникла новая ситуация, вышеприведенный дизайн не подходит, поэтому я хочу добавить новый подкласс в реализовать спецификацию c logi c,

BaseService(Abstract)
    - CompanyService
        - SpecificCompanyService 
    - PersonService
        - SpecificPersonService

, но SpecificCompanyService и SpecificPersonService logi c одинаковы, дубликат не требуется. Итак, хотите снова извлечь суперкласс

CompanyService / PersonService:
    - BaseSpecificService (Abstract):
        - SpecificCompanyService / SpecificPersonService

, но как динамически расширить родительский класс diff? Например, BaseSpecificService может динамически расширять CompanyService или PersonService.

SpecificCompanyService extends BaseSpecificService extends CompanyService
SpecificPersonService extends BaseSpecificService extends PersonService

Теперь мое решение - просто добавить SpecificUtils и поместить общие логики c в SpecificUtils. В этом случае для метода в utils нужно больше параметров, но если общий вход в систему в абстрактном родительском классе, это будет намного проще.

PS.

Справочная информация. Сначала существует только ситуация с заданием планировщика, например, каждые 10 минут синхронизируются измененные компании, люди с Oracle до ElasticSearch, но теперь я хочу поддержать эту ситуацию , то есть синхронизируются только указанные c данные временного диапазона от Oracle до ES.

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

Как вы сказали, SpecificCompanyService и SpecificPersonService имеют одинаковые логики c для всех вышеперечисленных классов.

Следовательно, вы можете сделать аннотация класс SpecificService для обоих вышеперечисленных ( SpecificCompanyService и SpecificPersonService )

и после этого вашего класса иерархия будет такой:

class CompanyService extends SpecificService
class PersonService extends SpecificService
class SpecificService implements BaseService
0 голосов
/ 18 марта 2020

Если «SpecificCompanyService и SpecificPersonService logi c одинаковы» -> почему бы не создать интерфейс для этого, как SpecificService

Мое предложение

class SpecificCompanyService extends BaseService, implements SpecificService
class PersonService extends BaseService, implements SpecificService
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...