Теперь есть супер 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.