2010-05-04 2 views
1

Я ищу примеры (примеры проектов), показывающие использование объектов (особенно абстрактных базовых классов и/или интерфейсов, ака «протоколов» для вас маленьких игроков) для разработки документа архитектура управления в пакете Processor большой Word, электронных таблиц, векторные графики или публикации, или офис-производительность (без базы данных) приложений с поддержкой как многие из следующих, как это возможно:Образцы объектно-ориентированного дизайна для крупных приложений, ориентированных на документ

  • любого проекта с открытым исходным кодом, будет быть идеальным, а язык реализации неважен, поскольку я ищу примеры дизайна, однако объектно-ориентированный язык с поддержкой «интерфейсов» является обязательным. Я знаю, по крайней мере, дюжину языков, и я готов изучить источник любого приложения.

  • Использование «интерфейса» может свободно применяться к интерфейсам XPCOM или COM, или к интерфейсам .NET, или даже к использованию чистых виртуальных (виртуальных + абстрактных) базовых классов для языков ООП, которые не имеют возможности объявить интерфейс, отличный от класса.

  • В основном я ищу надежную, полную и гибкую реализацию для документа, IDocument, различных видов документов (IDocumentView) и любых операций, имеющих смысл в этом случае.

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

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

  • Я знаю, что платформа Mozilla использует XPCOM, а ее дизайн сильно ориентирован на «интерфейс», но я больше ищут тип документа «текстовый процессор» или «формат электронных таблиц», а не веб-браузер ,

  • Меня особенно интересуют интерфейсы, используемые для доступа к данным и метаданным, такие как разметка (такие атрибуты, как полужирный, курсив и размер шрифта), а также возможность поиска и поиска именованных объектов в документе ,

+0

Это какой-то дерьмовый вопрос по какой-то причине? –

+1

да, я думаю, что он слишком большой/слишком специфический и слишком нетривиальный. – zvolkov

ответ

1

В качестве модели вы хотите посмотреть, тогда вы найдете хорошие, работоспособные и проверенные модели как в Microsoft Office, так и в OpenOffice.

В меньшем масштабе есть Java-свинг, который имеет гибкий компонент JEditorPane. Это гибкая структура, основанная на твердых абстракциях, и предоставляет стандартные реализации, которые попадают в тонкие детали макета текста и форматирования. Он в основном ориентирован на интерфейс в ключевых областях: модель документа, поведение и презентация.

  • Document представляет данные документа, операции по документу и уведомлений об изменении. StyledDocument - это вспомогательный интерфейс для добавления стилей форматирования в содержимое документа. Документы состоят из элементов, которые могут быть расположены в иерархии.

  • Action s определить поведение, которое может быть вызвано на модели.

  • View s (абстрактный класс) определяют, как представить элемент модели документа. Подобно элементам, представления могут быть иерархическими.

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

Есть стандартные реализации для базового styled documents и HTML documents, которые стоит посмотреть в, чтобы увидеть, как вещи работают под капотом. Источники доступны для просмотра по адресу docjar - или для download (через Mercurial) и распространяются с помощью JDK.

NetBeans, построенная на Java, имеет ряд различных редакторов. netbeans editors построены поверх реализации Swing EditorKit по умолчанию. Вот tutorial, создающий простой пользовательский редактор, который может дать вам представление о том, как редактор работает и реализуется.

Обращаясь к электронным таблицам, в проекте OpenOffice есть обзор модели Spreadshet Document - есть соответствующая страница для text documents - как от OpenOffice Developers Guide.

Это довольно много материала, который, я надеюсь, уместен и дает вам массу идей!

+0

Это очень хорошо. Я ожидаю, что это будет отмечено как ответ на этот вопрос. –

+0

Я был напуган всеми X префиксами в API OO и задался вопросом, что они означают. Здесь был приведен краткий обзор: http://api.openoffice.org/docs/DevelopersGuide/Appendix/IDLDesignGuide/IDLDesignGuide.xhtml –

+0

Молодец, спасибо. –

Смежные вопросы