Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6464
Последний выпуск: 19.06.2015

Архитектура (ООП)

7.2K
22 марта 2012 года
polaroid
94 / / 05.07.2008
Приветствую уважаемые форумчане!

Давно не был на форуме, и зайдя, ужаснулся: структура форума стала просто отвратительной. Надеюсь админ это читает:D
Прошу прощения за оффтоп, перейду сразу к вопросу.

Вопрос у меня в следующем:

Реализую систему вывода изображений. Можно представить, что это некий графический редактор, в котором изображение составляется из отдельных элементов.
У меня таких элементов несколько: это текст (и его вариации), картинка и т.д.
Набросал следующую архитектуру:
абстрактный класс Object, имеет поля (координаты, размеры) и абстрактный метод draw()
От этого абстрактного класса наследуются все атомарные графические классы (текст, картинка и т.д.)

Имеется класс Image, который содержит свои поля и методы, а также является контейнером для указанных выше атомарных объектов. Один из методов класса Image это render(). В этом методе в цикле прогоняются объекты и для каждого из них вызывается метод draw().

При сохранении в файл, объект класса Image просто сериализуется. При загрузке - десериализуется соответственно.

Всё бы хорошо, но я немного заступорился на следующем моменте:
Объект "Текст" содержит поле "имя файла шрифта", которым рисуется этот текст. При сохранении этого объекта хранить нужно только имя шрифта, но не путь к нему.
Вопрос такой: какая сущность, по логике вещей должна настраивать объект "Текст", добавляя к шрифту еще и путь, а при сериализации, удаляя этот путь?

Пишу это на PHP. Самый очевидный вариант - добавить к объекту "Текст" метод __sleep() и при сериализации стирать путь.
Добавлять же путь будет объект "Конструктор", который будет брать из контейнера Image все текстовые объекты и исправлять в них путь.
Воторой вариант - жестко прописать какой-либо глобальный конфиг, из которого объект "Текст" будет сам брать настройки.

Помогите разобраться, как будет всё-таки правильнее?
10
23 марта 2012 года
Freeman
3.2K / / 06.03.2004
Если пути к шрифтам (картинкам, стилям) являются параметрами окружения, они должны передаваться как окружение в класс или процедуру сохранения/загрузки, чтобы в файле хранились только перемещаемые, абстрактные данные, а конфигурация на каждом узле (домене, сервере, сайте) может и должна быть своя.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог