У меня есть набор классов, которые представляют хранение формата шрифта в файле. Каждый шрифт определяет набор символов (форма, которая отображается в код UTF32).
Глифы могут быть представлены контуром (набор кривых Безье в моем случае) или растровым изображением.
Моя первая мысль была о том, что это приведет к классам GlyphOutline и GlyphBitmap, которые наследуются от Glyph.
Единственная проблема с этим дизайном состоит в том, что нет общих методов. Чтобы сделать что-нибудь полезное с любым классом, мне нужно было бы использовать rtti (которого я предпочел бы избежать).
У меня такой вопрос: можете ли вы придумать лучший способ изобразить глиф / есть ли какой-то шаблон проектирования, который имеет дело с этой ситуацией?
Я пытался сделать этот язык независимым, но я пишу на c ++, если это что-то меняет.
EDIT:
Я рассмотрел использование обобщений, где Glyph содержит ссылку на некоторые / многие GlyphRepresentations, где T будет Outline или Bitmap или что-либо еще, что вы можете использовать для представления глифа. На самом деле мне очень нравится это решение, так как оно решает проблему глифа, представленного как Outline и Bitmap. Однако это заставит использовать RTI.
Это, вероятно, решение, которое я бы выбрал, если бы использовал c #, где отражение замечательно и приятно, но в среде c ++, в которой я работаю, rtti реализован как набор очень сложных макросов, которые, я уверен, вы можете понимаю, я очень хочу избежать
EDIT:
Отвечая на вопрос oli, я согласен с вами в какой-то степени, но отношения isa (как в GlyphOutline - это Glyph, и может делать все, что может делать глиф), что, как я считаю, подразумевает, что должно быть наследование. ? Я не уверен в этом, похоже, в любом случае есть веские аргументы.
Мое предпочтительное решение до сих пор - шаблон посетителя, но это просто комментарий, а не ответ, и я хотел бы подождать немного дольше, чтобы увидеть, появляются ли какие-либо другие решения.