У меня следующая структура объектов:
class Annotation;
class LabelAnnotation: inherits Annotation;
class TextAnnotation: inherits LabelAnnotation;
Я хотел бы использовать объекты-создатели для некоторой инициализации этого объекта (эта инициализация зависит от внешних настроек, поэтому я не хочу делатьэто в конструкторе этих объектов.)
В частности, при создании LabelAnnotation я хотел бы сделать:
fontSize = AppDefaults.fontSize
Итак, я пишу "создатель":
class LabelAnnotationCreator {
LabelAnnotation create() {
annotation = LabelAnnotation()
annotation.fontSize = AppDefaults.fontSize
return annotation;
}
}
Теперь я хотел бы создать TextAnnotationCreator.Вот где я застрял: я не могу использовать LabelAnnotationCreator, потому что он создаст экземпляр LabelAnnotation, но, с другой стороны, я хочу извлечь выгоду из инициализации, выполняемой LabelAnnotationCreator.
class TextAnnotationCreator {
TextAnnotation create() {
annotation = TextAnnotation()
// I'm stuck here:
// can't do LabelAnnotationCreator().create()… ???
return annotation;
}
}
Очевидно, что это неправильный шаблон, но я не уверен, как найти правильный.
Спасибо!