我想請教一下最佳實踐在我的情況:結構或Messenger在.NET 4.5
假設我有這樣的代碼
Class BaseClass {
protected bool CheckResponse(string response) {
if (response == SomeCondition)
{
runErrorMessages();
return true;
}
return false;
}
}
Class DerivedClassA {
ConnectorClass myConnector = new ConnectorClass();
private void myCommand(string req) {
string resp = await myConnector.SendDataToServer(req);
if (!CheckResponse(resp))
DoSomething1();
}
}
Class ConnectorClass {
public async Task<string> SendDataToServer(string req) {
string resp = await Server.WaitForResponse(req);
return resp;
}
}
最好是像現在一樣或低於這個嗎?
Abstract Class BaseClass {
public BaseClass() {
Messenger.Default.Register<string>(CheckResponse);
}
public abstract callWhateverDeriveWant();
private void CheckResponse(string response) {
if (response == SomeCondition)
{
runErrorMessages();
} else
callWhateverDeriveWant();
}
}
Class DerivedClassA {
ConnectorClass myConnector = new ConnectorClass();
private void myCommand(string req) {
await myConnector.SendDataToServer(req);
}
public abstract callWhateverDeriveWant() {
callSomething();
}
}
Class ConnectorClass {
public async Task SendDataToServer(string req) {
string resp = await Server.WaitForResponse(req);
Messenger.Default.Send(resp);
}
}
對於您的信息,會有很多從BaseClass派生的派生類,它的行爲與DerivedClassA類似。
請幫我找出解決我的案子的最佳方法。
以前感謝。
當然,如果你的方法命名比結構更具功能性,那麼這兩種情況會更好。例如'callWhateverDeriveWant'應該是'afterResponseChecked'或類似的東西。 – theMayer 2014-11-08 12:24:26
對不起。什麼方法callWhateverDeriveWant做的是做一些事情後,我知道如果答案不是錯誤的迴應。 – 2014-11-08 13:21:16