Кто-либо может дать четкое объяснение того, почему Google Guice полезен?

Я подозреваю, что Вы собираетесь ненавидеть этот ответ. Путем Вы делаете это в Python

# code here
if DEBUG:
   #debugging code goes here
else:
   # other code here.

, Так как Python является интерпретатором, нет никакого шага предварительной обработки, который будет применен, и никакое конкретное преимущество для наличия специального синтаксиса.

35
задан sanity 22 September 2009 в 21:12
поделиться

3 ответа

Использование Google Guice для упрощения модульного тестирования - это только важное преимущество. Некоторые люди могут даже не использовать модульное тестирование в своем проекте. Люди использовали Spring / Dependency Injection не только для модульного тестирования.

Низкоуровневое преимущество использования Google Guice заключается в сплоченности вашего приложения, ваши классы в проекте могут быть слабо связаны друг с другом. Я могу предоставить класс для другого класса, чтобы они не зависели друг от друга.

Рассмотрим этот пример:

public class A{

}

public class B{
  A a = new A();
}

Класс B будет тесно связан с классом A, или, другими словами, он зависит от существования класса A.

Но с Guice я могу вместо этого сделать его слабо связанным следующим образом:

public class B{
    private A a;

    @Inject
    public B(A a){
        this.a = a;
    }
}

Класс B теперь слабо связан с A, и Guice отвечает за предоставление экземпляра A вместо того, чтобы B создавать его. Благодаря этому вы можете расширить его, чтобы обеспечить интерфейс от A до B, и реализация может быть объектом Mock, если вы хотите модульное тестирование своих приложений.

Сказав, что мы пока обсуждаем только преимущества внедрения зависимостей. Помимо внедрения зависимостей, преимущества использования Google Guice следующие:

  1. Guice имеет очень чистую реализацию внедрения конструктора. Как видно из примера, вы просто добавляете конструктор аннотации @Inject.
  2. Guice также имеет сеттер Injection, использующий ту же аннотацию.
  3. Сказав, что инъекция на основе аннотаций является очень чистым подходом по сравнению с инъекцией на основе XML, как некоторые другие реализации DI.
  4. Все инъекции зависимостей и конфигурация являются используя Java, поэтому по умолчанию вы гарантированно получите безопасность типов в своем приложении.
  5. Guice имеет очень легкую реализацию аспектно-ориентированного программирования (или, может быть, вы можете назвать ее оболочкой для реализации AOPAlliance AOP). И хорошо то, что он не генерирует заглушки или что-то в этом роде.

Это его обзор. Но чем глубже вы познакомитесь с Guice, тем больше будет в нем хорошего. простой реальный пример: если вы используете GWT с реализацией MVP , компоненты / виджеты в вашем GWT-приложении очень слабо связаны и не тесно интегрированы друг с другом.

так много всего хорошего в этом. простой реальный пример: если вы используете GWT с реализацией MVP , компоненты / виджеты в вашем GWT-приложении очень слабо связаны и не тесно интегрированы друг с другом.

так много всего хорошего в этом. простой пример из реальной жизни: если вы используете GWT с реализацией MVP , компоненты / виджеты в вашем приложении GWT очень слабо связаны и не тесно интегрированы друг с другом.

44
ответ дан 27 November 2019 в 07:02
поделиться

Для этого нет встроенного способа. Я бы рекомендовал упаковать ваш код в каталог и распространять его таким образом. Я делаю это с помощью PHP, я помещаю код в каталог «something.module», а затем перебираю каталог модулей, включая главный файл в каждом каталоге .module. Но для чего-то более простого вы можете просто иметь такую ​​структуру:

my_package/
  my_package.php
  include1.php
  include2.php

my_package.php будет include (realpath (dirname (__ FILE __). '/Clue1.php')) .

4
ответ дан 27 November 2019 в 07:02
поделиться

Возможно, вам стоит вернуться в прошлое и поближе взглянуть на проблемы, которые Guice хотел решить. Чтобы понять мотивы Guice, идеальной отправной точкой являются новости Bob Lee: I Don't Get Spring на TheServerSide.COM (и их комментарии). Затем продолжайте анонс Google Guice, Java Dependency Injection Framework (и комментарии) и Tech Talk: Боб Ли в Google Guice (и комментарии).

Лично я разделял опасения по поводу злого XML: ад конфигурации XML, XML и возможные ошибки времени выполнения, подверженные ошибкам и рефакторингу идентификаторы строк, и т. Д. И т. Д. На самом деле я считаю, что скептическое мнение о Spring и согласованности было хорошим для всех (включая Spring). Поэтому я был рад видеть нового игрока в среде DI framework. особенно современный фреймворк, использующий функции Java 5 (обобщения и аннотации для обеспечения безопасности типов).

И потому, что Google использует Guice в критически важных приложениях (почти каждое приложение на основе Java также является приложением на основе Guice: AdWords , Google Docs, Gmail и даже YouTube, как сообщает "Crazy" Боб Ли в Guice² ), я не могу поверить, что Guice полностью ошибается и не представляет никакой ценности. К сожалению, я не думаю, что Google предоставит много кода этих приложений в качестве примеров ... Но вы можете найти интересные вещи в списке приложений, использующих Guice и / или в списке третьего аддоны party Guice . Или посмотрите книги, упомянутые в Guice² . Или спросите Боба :)

И потому, что Google использует Guice в критически важных приложениях (почти каждое приложение на основе Java также является приложением на основе Guice: AdWords , Google Docs, Gmail и даже YouTube, как сообщает "Crazy" Боб Ли в Guice² ), я не могу поверить, что Guice полностью ошибается и не представляет никакой ценности. К сожалению, я не думаю, что Google предоставит много кода этих приложений в качестве примеров ... Но вы можете найти интересные вещи в списке приложений, использующих Guice и / или в списке третьего аддоны party Guice . Или посмотрите книги, упомянутые в Guice² . Или спросите Боба :)

И потому, что Google использует Guice в критически важных приложениях (почти каждое приложение на основе Java также является приложением на основе Guice: AdWords , Google Docs, Gmail и даже YouTube, как сообщает "Crazy" Боб Ли в Guice² ), я не могу поверить, что Guice полностью ошибается и не представляет никакой ценности. К сожалению, я не думаю, что Google предоставит много кода этих приложений в качестве примеров ... Но вы можете найти интересные вещи в списке приложений, использующих Guice и / или в списке третьего аддоны party Guice . Или посмотрите книги, упомянутые в Guice² . Или спросите Боба :)

Или посмотрите книги, упомянутые в Guice² . Или спросите Боба :)

Или посмотрите книги, упомянутые в Guice² . Или спросите Боба :)

18
ответ дан 27 November 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: