具体实例
有没有办法来解决这个问题?我的意思是使用委托来确保 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之后被调用。 –