В прошлый день я реализовал простой класс, который служил бы контейнером IOC (не очень) в одном из моих игровых проектов, и какой-то профессиональный парень сказал мне, что у него будут некоторые проблемы при тестировании кода (слишком вены, чтобы поделиться тем, чтоименно в этом проблема !!)
, хотя я всегда использую фреймворки IOC, я хотел знать, почему именно эта методология плоха?
Я даже написал много тестов (используя фиктивные фреймворки), используя этометодологии и никогда не было проблем.
Мне нужна ваша идея о проблемах проектирования этого:
public class IocContainer{
private static IocContainer instance;
private IocContainer(){
}
public static IocContainer getInstance()
{
if(instance == null){
instance = new IocContainer();
}
return instance;
}
public ChatPresenter getChatPresenter(ChatView chatView)
{
return new ChatPresenterImpl(chatView, getChatRepo() , getMessagingService());
}
private ChatRepo getChatRepo()
{
return new ChatRepoImpl(getDbHelper(), getRemoteService());
}
private MessagingService getMessagingService()
{
return new MessagingServiceImpl()
}
private DbHelper getDbHelper()
{
return new DbHelperImpl();
}
private RemoteService getRemoteService()
{
return new RemoteServiceImpl();
}
}
, как вы видите, я сделал доступным только getChatPresenter, и я использую это, как показано ниже, иэто работает хорошо.
ChatPresenter presenter = IocContainer.getInstance().getChatPresenter(this)
код обрабатывает инверсию управления без какой-либо жесткой связи (используя интерфейсы).
Я хочу знать что-то неправильное с этим подходом?(Я хочу получить ответы с технической точки зрения, потому что я уже знаю, что использование библиотеки контейнеров Ioc проще, имеет больше функций, таких как области и т. Д.) *
На самом деле я хочу знать любую проблему и ограничения, которые могут возникнуть при таком подходев будущем?
будь жестоким и убей меня: D