可以說我有下面的一組接口....如何重構胖界面?
public interface IStart
{
void M1();
bool IsWorking { get; }
}
public interface IStartStop : IStart
{
void M2();
event EventHandler DoM1;
event EventHandler DoM2;
}
public interface IPreferencesReader : IStartStop, IDisposable
{
string CustomColumnDefinition {get;}
bool UsePricelevelDetection {get;}
void InitializePreferences();
}
現在,如果我要實現我的IPreferencesReader類會是什麼樣子下面。這是一個胖接口的例子,其中我必須提供實現我可能不需要的方法。
public class PreferencesReaderBase : IPreferencesReader
{
public void M1()
{
throw new NotImplementedException();
}
public bool IsWorking
{
get { throw new NotImplementedException(); }
}
public void M2()
{
throw new NotImplementedException();
}
public event EventHandler DoM1;
public event EventHandler DoM2;
public void Dispose()
{
throw new NotImplementedException();
}
public string CustomColumnDefinition
{
get { throw new NotImplementedException(); }
}
public bool UsePricelevelDetection
{
get { throw new NotImplementedException(); }
}
public void InitializePreferences()
{
DoSomeInitialization();
}
}
我可以應用這種情況下的任何模式,以重構它嗎?
編輯:我不能沒有這個層次,因爲在不能刪除任何接口。
感謝您的關注。
我認爲你的IPreferencesReader做了太多事情:CustomColumnDefinition聽起來並不像讀取偏好那樣,例如,它聽起來應該是在子類上。 – 2010-06-24 14:28:56