暗示某种实现的接口有什么好处



我正在看这个:

public interface IAjaxCallbackEventHandler : ICallbackEventHandler
    {
        string CallbackResponse { get; set; } 
    }
}

所以页面实现了这个接口,最终看起来像这样:

public partial class XPage : Page, IAjaxCallbackEventHandler {
    // public because it's an interface, but really an implementation detail ;-(
    public string CallbackResponse { get; set; }
    // implementing underlying ICallbackEventHandler interface
    public void RaiseCallbackEvent(string eventArgument)
    {
        try
        {
            CallbackResponse = SomeOperation(eventArgument);
        }
        catch (Exception ex)
        {
            CallbackResponse = ex.ToString();
        }
    }
    // implementing underlying ICallbackEventHandler interface
    public string GetCallbackResult()
    {
        return CallbackResponse;
    }
}

据我所知,这个接口只是确保程序员将不得不考虑存储来自RaiseCallbackEvent的响应,以便稍后从调用GetCallbackResult返回。

我看不出这种技术有任何真正的好处,因为您已经必须实现并考虑两种执行此操作的方法。

您的想法 - 这种方法有什么有效的好处,还是它只是一个代码气味?

接口应该只定义合约,除了满足合约的要求之外,不应该依赖于暗示代码应该如何实现。

如果你想暗示某些代码路径,那么你最好有一个基类来实现接口并从中继承,就像基类一样,你对代码流有一定程度的控制,同时仍然为要重写的自定义逻辑位提供入口点。

最新更新