我正在使用自定义控件设置在XNA中创建用户界面。我有一个名为Clickable
的基本抽象类,它包含在各种动作发生时运行的方法,即; OnClick
,OnRelease
。
我试图在其中实现侦听器,我使用以下两种方法来实现:
public void RegisterClickListener(Action<Vector2> ClickMethod)
{
listners.Add(ClickMethod);
}
public void OnClickMethod(Vector2 pos)
{
foreach (Action<Vector2> func in listners)
func(pos);
}
RegisterClickListener
将参数中传递的方法添加到OnClickMethod
方法触发时要调用的方法列表中。 OnClickMethod
只是遍历列表并调用每个方法。
每次调用抽象方法OnClickMethod
(下)时,我都需要一种能够调用OnClick
的方法。目前,我每次使用OnClickMethod
时都必须手动调用OnClick
,这是不理想的。
public abstract void OnClick(Vector2 pos);
有什么方法可以在保持OnClick抽象的同时做到这一点?或者我每次使用它时都必须摘下摘要并打电话给基地?
答案 0 :(得分:2)
您正在寻找Template method pattern。创建一个充当模板的方法(按固定顺序执行一些步骤),然后给客户端选项仅覆盖它的一小部分。
public void OnClick(Vector2 pos)
{
OnClickCore(pos);
OnClickMethod(pos);
}
public abstract void OnClickCore(Vector2 pos);
现在OnClick
是一个模板方法,它定义了在调用时需要调用的规则集。