1

我想执行一个功能,但在此之前,我想验证密码。

我选择使用代理设计模式。


用词:

创建代理类,

发送密码,

并告诉他如果密码没问题要执行什么功能。

问题是根据代理模式,整个内部应该/最好是私有的。

所以 - 我从 Method1/2 外面看不到...

而且我不想做Method1/2 public(而且我不想要如果)。我想使用代表。

那么,我如何(从外部)向他发送有效的Action参数?(ac参数)

我应该为每个函数创建一个公共 Action 吗?

在此处输入图像描述

4

1 回答 1

2

通常,您要执行的方法不应该是您的代理类的一部分。这是这个类的调用者传递的方法:

public class ProxyClass
{
    public ProxyClass(string password, Action ac)
    {
        if (password == "111")
        {
            ac();
        }
    }
}

然后你可以传递一个Action作为第二个参数:

var proxy = new ProxyClass("111", () => 
{
    ... some code that you want to execute in case of success
});

或者如果您已经定义了一些方法:

public class Foo
{
    public void Success() 
    {
        ... some code that you want to execute in case of success
    }
}

你可以:

var foo = new Foo();
var proxy = new ProxyClass("111", foo.Success);

如果 Success 是一个静态方法,则不需要以下实例Foo

var proxy = new ProxyClass("111", Foo.Success);
于 2012-02-19T11:53:43.947 回答