[英]Call method from abstract class when abstract method called in the derived class
我正在使用自定義控件設置在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
只是遍歷列表並調用每個方法。
每次調用我的抽象方法OnClick
(bellow)時,我都需要一種能夠調用OnClickMethod
方法。 目前我每次使用OnClick
時都必須手動調用OnClickMethod
,這並不理想。
public abstract void OnClick(Vector2 pos);
有沒有辦法在保持OnClick抽象的同時做到這一點? 或者我每次使用它時都必須取消摘要和呼叫基地?
您正在尋找模板方法模式 。 創建一個充當模板的方法(按固定順序執行一些步驟),然后給客戶端選項僅覆蓋它的一小部分。
public void OnClick(Vector2 pos)
{
OnClickCore(pos);
OnClickMethod(pos);
}
public abstract void OnClickCore(Vector2 pos);
現在OnClick
是一個模板方法,它定義了在調用時需要調用的規則集。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.