c# – 自引用构造函数.这种图案有异味吗?

我正在为高级开发人员进行代码审查,他们已经实现了一个非常好奇的设计模式.

public class A : ABase
{
    private ABase aBase { get; }
    public A(A a)
    {
        aBase = a;
    }
    public A () {}
    //loads of stuff depending on aBase being initialised
}

始终使用A()构造函数,然后将构造的对象传递回A(A)构造函数,就像这样

var a = new A();
//a is not usable at this point.
var b = new A(a);
//b is usable.

我的问题:这是一种合法的设计模式吗?如果没有,初级开发人员如何让高级开发人员对代码库做一些疯狂的事情.

最佳答案

Is this a legitimate design pattern?

是.这看起来很像Decorator模式,您可以使用组合向您的类添加行为,而不会使用太多子类爆炸您的API.模式是否适合您的上下文取决于您未向我们展示的其余代码.

声明var b = new A(a);据说用其他行为装饰A的现有实例.将其与Strategy模式进行比较,其中为每个排列/行为组合创建新的子类.

And if not, how does a junior developer approach a senior developer
doing something crazy to the code base

此问题超出了StackOverflow的范围.但如果我必须回答这个问题,那么正确的方法就是尽可能多地阅读并以开放的心态接近你的老人.

点赞