C# 此设计模式的名称是什么(通过委托向协作者公开私有方法)?
类通过委托向协作者公开私有方法或属性的设计模式的名称是什么?这是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
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中存储另一个对象的状态。当然,这是一个人为的例子。经过思考,我倾向于同意这个回答。我想这是一种不符合模式的编码习惯用法。封装中断可能源于这样一个事实,即客户端代码可以挂起委托,并在更新调用返回后更改属性。