In many multi threading module designs of mine, I generally design a base class, and
this class have some events. Exempli gratia:

void eventOnStart();
void eventOnStop();
void eventOnItemAdded( size_t itemIndex );

There is this problem though. I need/want this class to be able to bind a function, a method, or a shared method. From the perspective of class design, there shouldn't be any difference. Its purpose is to let know about the event, not to care about how the event
handler is designed.

If I want handlers to be functions, I design it like,

public alias EventOnStart = void function();
public EventOnStart eventOnStart;


If it is for normal methods, design becomes like,

public alias EventOnStart = void delegate();


For shared methods, it becomes,

public alias EventOnStart = void delegate() shared;


As you will guess, to be able to support any of those three, it becomes so complex. Is there any way generalise to support three of them without making this any complex? A secondary thing, this is not D related though, whether there is any different approach for event listener design like Observer pattern but with little overhead and complexity?

Reply via email to