我有類Test中的幾個方法,除了一個特定的方法調用以外,它們具有相同的代碼。是否有可能將這些方法合併到一起(在函數foo中),然後調用foo並告訴它調用哪個方法而不做更大的開關或if/else語句?一個重要的注意事項是foo僅在類Test內部調用(因此foo是私有的),並且函數foo本身從一個類Bar調用不同的方法。類Bar和Test不在同一個繼承樹中。重構 - 方法共享相同的代碼,除了一個函數調用
class Test {
/* ... */
private void foo("Parameter that specifies which method to call from class Bar")
{
/* merged code which was equal */
Bar bar = new Bar();
bar.whichMethod(); // Call the method (from Class Bar) specified in the Parameter
/* merged code which was equal*/
}
/* ... */
}
當然,我會添加某種開關(「調用哪個方法」)語句。但有沒有更好的方法來做到這一點?
這正是我一直在尋找。非常感謝你! – BluesSolo 2014-10-29 15:00:25