2014-09-19 20 views
0

在研究C#中繼承概念的實際應用時,我引入了一種有趣的代碼模式。非通用接口I多次繼承通用類型I<T>,每個接口都具有不同的類型參數。 從I<T>繼承的唯一原因是爲了宣告重載,I<T>在代碼中的任何地方都不會被引用,除了繼承關係。爲了說明:將此設計模式命名爲

interface Combined : Operations<Int32>, Operations<Int64>, Operations<double> {} 

interface Operations<T> { 
    T Add(T left, T right); 
    T Multiply(T left, T right); 
} 

在實踐中,IOperations接口有30種方法具有廣泛的XML文檔,所以它似乎是合乎邏輯不想重複這些聲明這麼多次。我搜索了'過載重複設計','方法聲明重用設計模式'等,但找不到任何有用的信息。

也許這種模式在支持像C++這樣的多繼承的語言中有着更深刻的用途,其中也可以提供操作的實現。

tl; dr:您能否在上面的代碼示例中命名設計模式?

回答

0

我不認爲它有一個名字。經典的模式集主要基於舊Java和預標準化C++中的代碼,兩者都不支持參數多態(模板/泛型),所以需要它們的模式並不真正顯示。就GoF而言,這只是從三個不同的接口繼承而來。

這也有點太難看,作爲一種模式的資格。爲什麼只有這三種類型?爲什麼不是Int16或Uint32?爲什麼接口是通用的,而不是方法?

+0

要回答你的問題:這個例子只是一個例子,可以添加或刪除更多的數據類型。該接口是通用的,而不是方法,因爲固定數量的類型支持'IOperations '中的操作,'IOperations '從未被引用,只使用'Combined'。這樣做的唯一原因是重複方法聲明和XML文檔。 (實現'Combined'的類實現了所有的方法)。 – Bas 2014-09-19 08:19:54

0

一個建議 - 可能是在

甲非通用interfaceI從一個普通的I型多次繼承,每個部分具有不同的類型參數Adapter pattern。我從我繼承的唯一原因是爲了宣佈重載

也使用它的目的。它有助於將類的接口轉換爲另一個接口,這是期望的。適配器讓類可以協同工作,否則就會因爲不兼容的接口而無法工作。

要在你的情況我不知道是什麼概念在非通用接口I實現誠實,但我想這是要求存儲對象的通用方法時,因爲有偶爾需要處理具體類型不同

+0

它確實看起來像一個適配器模式 – Coldstar 2014-10-28 05:42:39