簡體   English   中英

當在派生類中調用抽象方法時,從抽象類調用方法

[英]Call method from abstract class when abstract method called in the derived class

我正在使用自定義控件設置在XNA中創建用戶界面。 我有一個名為Clickable的基本抽象類,它包含在各種操作發生時運行的方法,即; OnClickOnRelease

我試圖將偵聽器實現到此,我使用以下兩種方法來實現:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM