2016-10-01 3 views
-4
public interface CrudRepository{ 
    Test createThis(Test t); 
} 

@Repository 
public class TestCrud implements CrudRepository{ 
    public Test createThis(Test t) 
{ 
    //implementation 
} 

}Почему мы сначала делаем репозиторий, а затем услуги и снова из хранилища, который мы реализуем? Проверьте код, который вы поймете?


Теперь интерфейс сервиса и реализация

public interface CrudService{ 
    Test createThis(Test t); 
    } 

@Service общественного класса TestService реализует CrudService {

@AutoWired 
    CrudRepository crudR; 

    public Test createThis(Test t){ 
      crudR.createThis(t) 
    } 

}

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

+1

вы можете переключаться из одного хранилища в другое .. так же вы можете переключаться с одного сервиса на другой. в чем проблема? – SMA

+0

Он изолирует ваши контроллеры от хранилища, что позволяет вам, например, отключить технологии баз данных без перезаписи всего бэкэнд-приложения. – jonrsharpe

ответ

0

Основная причина - «гибкость». В вашем случае служба не знает, откуда поступают данные? И это не обязательно. Он знает только, что есть репозиторий, который даст некоторые данные. Сервисы не должны знать, где дата сохраняется. Он может быть в файле, базе данных или в памяти. Другая цель заключается в том, что если у вас есть приложение, в котором вы сохраняете данные в файле, и вы хотите переключиться на базу данных. Вам нужно только написать новый уровень репозитория, который будет знать о базе данных, и вам не нужно включать одну строку кода в свой уровень обслуживания. Это основная цель, когда вы пишете большое приложение.

Если вы не понимаете меня, вы можете прочитать о Open закрыт принцип: http://www.oodesign.com/open-close-principle.html

+0

да спасибо, я думаю, теперь я понял разницу в репозитории и сервисе, потому что во множестве учебников я видел только мелочи и был таким же, и я был смущен тем. Еще раз хочу пожелать вам самого лучшего :)) – testIng

Смежные вопросы