具體實例
有沒有辦法來解決這個問題?我的意思是使用委託來確保 method2在method1之後或類似的東西之後被調用。 -
現貨。但我在想abstract
。您的整體需求具體可以推動它的任何方式。但我們還必須在混合中添加另一條評論:
更高級別的抽象可能會「修復」這一點。
大圖片
- 爲了公共登錄()方法(客戶端代碼),即...
- 調用LoginAttempted()和LoginValid()。
- 此外,這2分的方法是
abstract
(可能是委託)
- 因此客戶端代碼只能調用登錄()和...
- 記錄,在實現可自定義這些登錄的功能是如何工作的,並...
- 他們的呼叫順序是永久的。
BTW,具有法的有序列表替代方法調用的方法是模板設計模式。
這個例子是在C#(我希望它的作品!)
public abstract class LogOnBase {
// add comments here so we know what these are supposed to do
protected abstract void LogInValid(string, string);
protected abstract void LogInAttempted (string, string);
public bool Logon(string userName, string Password) {
LogInAttempted (userName, Password);
LogInValid (userName, Password);
}
}
// concrete implementation
public class LogOnConcrete : LogOnBase {
protected override void LoginValid (string UName, string PW) {
// do concrete stuff
}
protected override void LogInAttempted (string UName, string PW) {
// do concrete stuff
}
}
// Using the LogOn class
public class LogOnExample {
string whoAmI;
string passWord;
LogOnConcrete LogMeIn;
public LogOnExample (string me, string pw) {
whoAmI = me;
passWord = pw;
}
public static void Main (string[] args) {
LogOnExample driver = new LogOnExample (bubba, mySecretPW);
LogMeIn = new LogOnConcrete();
LogMeIn.Logon(driver.whoAmI, driver.passWord);
}
}
感謝保羅,是的,這肯定是一個反模式。 – Jonah
+1這就是答案的確:)但我正在離開我的臨時評論。 –
+1有沒有辦法解決這個問題?我的意思是使用委託確保方法2在類似方法1之後被調用。 –