Подтвердить что ты не робот

В чем основное различие между каркасом и набором инструментов?

Предоставляет ли структура возможность абстрагировать общий код, но не полностью (пример: абстрактное сетевое соединение, но не то, что вы на самом деле делаете с данными), и не решает каких-либо конкретных общих требований, тогда как набор инструментов решения общих проблем (пример: виджет диалогового окна)?

Реальный мир Пример: Prototype является "каркасом", но Dojo является "инструментарием".

Итак, мой вопрос в том, каковы критерии, чтобы назвать что-то фреймворком и называть его инструментарием?

4b9b3361

Ответ 1

Framework применяет некоторый шаблон проектирования для разработчика и предоставляет некоторые инструменты для генерации кода. Это хорошо соответствует моему первому предложению, поскольку он генерирует код в определенном стиле/шаблоне.
Библиотека дает вам функциональность, которую вы можете использовать по своему усмотрению. Подобно stdio-функциям C, Консоль С#, "встроенные" функции PHP и т.д.
Вы можете рассматривать библиотеку как своего рода API

Ответ 2

Процитировать Мартин Фольвер в своей статье о Инверсия управления:

Инверсия управления является ключевой частью что делает структуру, отличающуюся от библиотека. Библиотека по существу является набор функций, которые вы можете вызвать, в эти дни обычно классы. Каждый вызов выполняет некоторую работу и возвращает управление клиенту.

Структура воплощает некоторые абстрактные дизайн, с большим количеством встроенных действий. Чтобы использовать его, вам нужно вставить ваше поведение в разных местах рамки либо путем подкласса, либо путем подключения к вашим собственным классам. The код рамки затем вызывает ваш код в этих точках.

Короче говоря, большая разница в том, что ваш код вызывает библиотеку, а фреймворк вызывает ваш код.

Ответ 3

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

Инструментарий, с другой стороны, предоставляет различные инструменты, которые могут использоваться вместе или по отдельности. Он более гибкий, но требует больше усилий от имени программиста.