samedi 1 juin 2019

Problem with design using decorator pattern

So, this is my design. AccessDecorator classes have a reference to another Access just like normal Decorator Pattern.

design

But the problem is when I create an AccessDecorator wrapping a ConcreteAccess and then try to see which type the Access is:

Access access = new InAllowedAccess();
Access wrapperAccess = new MismatchAccess(access); 
if (wrapperAccess instanceof InAllowedAccess)
    //do something

Of course this won't work because wrapperAccess is not of type InAllowedAccess but what I really want to know is the type of the concrete access wrapped by the decorator.

I thought about implementing methods like isInstanceofInAllowed(), isInstanceofOutAllowed(), isInstanceofInDenied() and isinstanceofOutDeniedd() in Access classes but don't seems a good solution, I don't know...

Otherwise should I create decorator classes for each 4 types InAllowedAccess, OutAllowedAccess, InDeniedAccess and OutDeniedAccess?

Or there is other better design?

Aucun commentaire:

Enregistrer un commentaire