Bra*_*ris 3 c# static design-patterns
我知道如何实现Command Design模式如下:
public abstract class Command
{
public abstract void Execute(string someString);
}
Run Code Online (Sandbox Code Playgroud)
假设我继承了这个,作为一个例子:
public class ConnectionCommand : Command
{
public override void Execute(string connectionString)
{
...do some stuff here...;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是使用这个ConnectionCommand我需要首先实例化一个对象,但命令是无上下文的,所以我宁愿不必实例化任何东西来运行ConnectionCommand的Execute方法.(PS,ConnectionCommand.Execute()将从委托中的事件运行).
我如何重新创建这种设计模式,但允许静态调用这些方法?
代理是C#内置的命令模式实现.为什么重新发明轮子; 使用委托,自动支持静态,纯函数.
所以你有一个事件系统,那些事件会调用代理.您需要这些委托具有状态,而不创建某些类的实例.这就是关闭的地方.举个例子:
public class SomeClass
{
public static CreateCommand(SomeType state, SomeEventHandler eventHandler)
{
eventHandler += (s, e) => MyDelegate(state, s, e);
}
private static void MyDelegate(SomeType state, object sender, EventArgs e)
{
// do something with state, when the event is fired.
}
}
Run Code Online (Sandbox Code Playgroud)