Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 此设计模式的名称是什么(通过委托向协作者公开私有方法)?_C#_Design Patterns - Fatal编程技术网

C# 此设计模式的名称是什么(通过委托向协作者公开私有方法)?

C# 此设计模式的名称是什么(通过委托向协作者公开私有方法)?,c#,design-patterns,C#,Design Patterns,类通过委托向协作者公开私有方法或属性的设计模式的名称是什么?这是C语言,但可能也与其他语言相关 例如: class Foo { public int X { get; private set; } public void UpdateX(Bar bar) { bar.UpdateX(x => this.X = x); } } class Bar { public void Updat

类通过委托向协作者公开私有方法或属性的设计模式的名称是什么?这是C语言,但可能也与其他语言相关

例如:

class Foo
{
    public int X
    {
        get;
        private set;
    }

    public void UpdateX(Bar bar)
    {
        bar.UpdateX(x => this.X = x);
    }
}

class Bar
{
    public void UpdateX(Action<int> setter)
    {
        setter(7);
    }
}

Foo foo = new Foo();
Bar bar = new Bar();
foo.UpdateX(bar);
class-Foo
{
公共整数X
{
得到;
私人设置;
}
公共void UpdateX(Bar)
{
UpdateX(x=>this.x=x);
}
}
分类栏
{
公共void UpdateX(操作设置器)
{
设定器(7);
}
}
Foo-Foo=新的Foo();
条形=新条形();
foo.UpdateX(bar);

我认为这在状态模式中非常有用,它允许状态更新其上下文,而不需要上下文通过其公共接口公开内容,或在上下文类中嵌套状态类。

我在这里没有看到任何模式,但这是封装的中断


如果您拥有只读属性,那么您为什么要尝试绕过它。

委派是一种设计模式。

这与Memento模式有着惊人的相似性,Memento模式确实对存储和操作状态很有用

它还具有依赖注入或委托的元素

也许有比我更老练的人会认出它的真名

以下是有关纪念图案的一些信息:

依赖注入模式:
我要200美元。在通往访客模式的路上


我还认为这不会破坏封装,因为Foo定义了委托。

我认为这里的想法是在Foo中存储另一个对象的状态。当然,这是一个人为的例子。经过思考,我倾向于同意这个回答。我想这是一种不符合模式的编码习惯用法。封装中断可能源于这样一个事实,即客户端代码可以挂起委托,并在更新调用返回后更改属性。