这是采访中被问到的问题。
有一个
Label
带有属性Text
的标签在一个页面中很简单Label
,在其他页面中它可以处理以下任何一个或组合的操作
Clickable
Resizable
Draggable你如何设计这个应用 OOP 设计原则和设计模式的标签组件?
我说我将创建以下内容:
public class Label
{
public string Text{get;set;}
}
public interface IClickable
{
void Click();
}
public interface IDraggable
{
void Drag();
}
public interface IResizable
{
void Resize();
}
这样如果客户想要 Resizable Label
public class ResizableLabel:Label,IResizable
{
....
}
同样的方式ClickableLable
,DraggableLabel
但是,我觉得这是不正确的做法,因为我不想添加那些具体的类。我想避免使用ClickableAndDraggableLabel
or ClickableDraggableResizableLabel
。
是否有任何设计模式可以在不添加这些具体类的情况下解决这个问题?