Я определили класс событий:Добавление поведения к набору классов
Event
и все следующие классы наследуют от Event:
SportEventType1 SportEventType2 SportEventType3 SportEventType4
Прямо сейчас у меня будет только SportEvents, но я не «Не знаю, буду ли в будущем я хочу других событий, которые даже не имеют никакого отношения к спорту.
Позже я хочу нарисовать некоторую графику с информацией, полученной из событий, и логика рисования может быть немного сложной. Но на данный момент я думаю, что я не должен думать о том, как будет сделан чертеж, и я считаю, что, может быть, было бы лучше, если бы эта часть чертежа не была включена как неотъемлемая часть цепочки классов Event/SportEventX.
Я ищу решения этой проблемы. Я знаю, что могу просто сделать Event переменной экземпляра (атрибут для толпы java), указывающей на что-то как IDrawInterface, но это сделало бы класс Event «take», который позже будет использован для рисования. Я хотел бы сделать класс Event незаметным для этого, если это возможно.
Спасибо!
Из того, что я сейчас читаю о шаблоне посетителя, это означало бы, что я должен добавить метод в свой класс Event. Что, если этот класс не был моим/я больше не мог его изменить? –
В C# вы можете использовать методы расширения, чтобы добавлять вещи к классам, которые не принадлежат вам. – GWLlosa
Методы расширения * не * дают вам динамическую отправку, поэтому вы не можете реализовать шаблон посетителя, используя их. – munificent