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

时间:2010-12-10 05:22:13

标签: 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 UpdateX(Action<int> setter)
    {
        setter(7);
    }
}

Foo foo = new Foo();
Bar bar = new Bar();
foo.UpdateX(bar);

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

5 个答案:

答案 0 :(得分:1)

我没有看到任何模式,但它打破了封装。

如果您有一个只读属性,那么为什么要试图规避它。

答案 1 :(得分:1)

答案 2 :(得分:0)

委托是一种设计模式。

答案 3 :(得分:0)

这与Memento模式有惊人的相似之处,这对于存储和操纵状态确实很有用。

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

也许比我更有经验的人会以它的真名来认出它。

以下是有关Memento模式的一些信息:
Wikipedia: Memento

依赖注入模式:
Wikipedia: Dependency Injection

答案 4 :(得分:0)

我会花费Double Dispatch获得200分。在前往访客模式的路上。

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