Я прочитал книгу дяди Боба «Чистая архитектура». Есть одна глава, написанная Саймоном Брауном. Он пересмотрел несколько типов архитектуры. Он предлагает инкапсулировать реализации в пакеты.
Если я верну пакеты и отмечу (с помощью графического затухания) те типы, для которых модификатор доступа можно сделать более ограничивающим, картина станет довольно интересной (рис. 34.8).
Я реализовал один подход с помощью Spring DI:
com.my.service
public interface OrderService {
List<Order> getOrders();
}
и реализация:
com.my.service.impl
@Service
class OrderServiceImpl implements OrderService {
//...
}
Он отлично работает, потому что Spring находит OrderServiceImpl
помеченную @Service
аннотацию. OrderServiceImpl
инкапсулирован, как на (Рисунок 34.8.)
Но как я могу повторить это без конфигурации аннотации Spring? Например, если я использую конфигурацию Java Spring, я должен создать bean-компонент, подобный этому:
@Configuration
public class AppConfig {
@Bean
OrderService orderService(){
return new OrderServiceImpl();
}
}
Но у OrderServiceImpl
есть модификатор пакета.
Если я не использую Spring, что мне делать, чтобы повторить этот подход?