Существует ли структура внедрения зависимостей для Smalltalk? - PullRequest
9 голосов
/ 21 апреля 2010

Я использую Pharo, и я просто использую этот сценарий для Dependency Injection а-ля Guice Есть ли что-то похожее на Smalltalk?

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

Ответы [ 3 ]

4 голосов
/ 23 апреля 2010

Существует диалект Smalltalk с сильным акцентом на внедрение зависимостей.Это расширяет язык так, что не только имена методов, но и имена классов используют динамический поиск.Новый поиск имен классов больше всего похож на поиск методов, за исключением того, что пузыри всплывают через ряд вложенных классов, а не по цепочке наследования.Таким образом, вы можете изменить введенные классы, изменив среду вложенности.

Чтобы узнать больше о диалекте, перейдите по этой ссылке .

1 голос
/ 23 апреля 2010

С Guice похоже, что вы определяете свои классы, чтобы принимать определенные интерфейсы в качестве параметров конструктора. Затем вы говорите Guice, что «этот интерфейс отображается на этот класс, реализующий указанный интерфейс».

Такая вещь совершенно не нужна в Smalltalk, потому что классы Smalltalk заботятся только о протоколах.

Если бы мы перевели пример на Smalltalk, мы могли бы передать любой понравившийся объект в конструктор RealBillingService, если этот объект ответил на #logChargeResult: и #logConnectException:, т. Е. До тех пор, пока этот объект реализовал протокол, требуемый TransactionLog.

Вот ссылка на аналогичный ответ на приведенный выше.

0 голосов
/ 21 апреля 2010

Я не очень эксперт, но я нашел эту статью в Google: http://codebetter.com/blogs/jeremy.miller/archive/2006/05/05/144172.aspx

Надеюсь, это приведет вас в правильном направлении.
:)

...