1

関数を実行したいが、その前にパスワードを確認したい。

Proxy Design パターンを使用することにしました。


言葉で :

Proxy クラスを作成し、

パスワードを送信し、

パスワードに問題がない場合は、どの機能を実行するかを彼に伝えます。

問題は、プロキシパターンによれば、内部全体が非公開であるべき/より良いことです。

そう - Method1/2 の外からは見えません...

そして、私は作りたくありませんMethod1/2 public(そして、Ifはしたくありません)。デリゲートを使用したい。

では、どうすれば(外部から)有効なActionパラメーターを彼に送信できますか?(acパラメータ)

各関数に public Action をクレートする必要がありますか?

ここに画像の説明を入力

4

1 に答える 1

2

通常、実行したいメソッドはプロキシ クラスの一部であってはなりません。このクラスの呼び出し元が渡すメソッドです。

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

Action次に、2 番目の引数としてを渡すことができます。

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);

成功が静的メソッドであった場合、次のインスタンスは必要ありませんFoo:

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