Написание обёрток для библиотек - PullRequest
0 голосов
/ 21 марта 2011

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

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

Есть ли у вас какие-либо советы, как мне сделать свой код более переносимым (простое переключение библиотек)? Может быть, вы можете предложить дизайн графической оболочки, который работал для вас в прошлом.

1 Ответ

0 голосов
/ 21 марта 2011

Есть ли у вас какие-либо советы, как мне сделать свой код более переносимым (простое переключение библиотек)?

Это редко имеет существенное значение.

Если вы считаете, что должны обеспечить мобильность, у вас есть три варианта.

  • Наименее общий набор функций. Возьмите все библиотеки, которые, возможно, захотите использовать. Запишите все классы, методы и атрибуты и найдите наименьшее общее подмножество. Вы должны подумать, чтобы сопоставить все различные имена, чтобы быть уверенными, что семантика у вас как можно ближе.

    Это даст вам минимальную графическую реализацию, которую должен запускать везде.

    Тем не менее, он будет неэффективным, и вашему приложению (или оболочке) придется много программировать, чтобы заполнить недостающие функции единообразным способом.

  • Союз всех функций. Возьмите все библиотеки, которые, возможно, захотите использовать. Запишите все классы, методы и атрибуты и просто добавьте каждую новую вещь в постоянно растущий список функций. Вы должны подумать, чтобы сопоставить все различные имена, чтобы быть уверенными, что семантика у вас максимально близка, чтобы избежать добавления дубликатов.

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

Вы не первый, кто задумывается над этим и осознает, что это действительно очень трудно сделать.

Так что же отступить?

Выбор 3.

Выберите свою любимую библиотеку. Получите что-нибудь на работу.

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

Повторяйте этот последний шаг до тех пор, пока у вас не останется клиентов или спрос на них не станет настолько низким, что увольнять их как клиента дешевле, чем поддерживать их.

...