This was the question asked in an interview.
There is a
Label
with a propertyText
In one page a label is simpleLabel
, in other pages it may handle any one or combination of the below actions
Clickable
Resizable
DraggableHow do you design this label component that applies OOP design Principle & Design Pattern?
I said that I would create the following:
public class Label
{
public string Text{get;set;}
}
public interface IClickable
{
void Click();
}
public interface IDraggable
{
void Drag();
}
public interface IResizable
{
void Resize();
}
So that if the client want Resizable Label
public class ResizableLabel:Label,IResizable
{
....
}
same way ClickableLable
, DraggableLabel
However, I feel that this is the incorrect approach, because I do not want to add those concrete classes. I want to avoid having ClickableAndDraggableLabel
or ClickableDraggableResizableLabel
.
Is there any design pattern that would solve this problem without adding these concrete classes?
ResizableLabel
in your example a new class then? – Scoundrel