Я являюсь автором небольшой библиотеки C++, которая реализует внедрение зависимостей (. Думаю, кто-нибудь назовет ее «контейнером IoC» ).
Я всегда думал, что поиск хорошей метафоры для библиотеки может помочь во многих отношениях :
Теперь в моей библиотеке я использовал метафору устройства/разъема :: ваши классы — это «устройства», их зависимости — «разъемы», и вы можете подключить разъем к другому устройству. Это пример кода:
REGISTERED_CLASS( Foo ), public Device
{
...
private:
Plug< Bar > bar;
...
};
...
catalog.Create( "myFoo", "Foo" );
catalog.Create( "myBar", "Bar" );
...
catalog[ "myFoo" ].Plug( "bar" ).Into( catalog[ "myBar" ] ); // this means myFoo.bar = myBar
Что ж, меня эта метафора не совсем устраивает, потому что:
MultiplePlug< T >
(это в основномstd::list< Plug< T > >
), но это звучит не очень хорошо :что такое "множественный штекер" в реальном мире?Здесь вы можете найти мою библиотеку. Есть ли у вас какие-либо предложения по метафоре, которая лучше подходит моему коду?
(Тем не менее, если у вас есть другие хорошие предложения о библиотеке, они будут приветствоваться!)
Большое тебе спасибо.
Примечание:Я знаю, что есть еще один вопрос на тему «Какая хорошая метафора для внедрения зависимостей», но это не ее дубликат.
Изменить:Это — обсуждение на эту тему в комментарии к известному сообщению в блоге.
Редактировать2:Наконец, я решил изменить синтаксис на этот более приятный и простой синтаксис:
// explicit catalog
use( myCatalog["myBar"] ).as( "bar" ).of( myCatalog["myFoo"] );
// implicit catalog:
within( myCatalog )
{
use( "myBar" ).as( "bar" ).of( "myFoo" );
...
}