我正在为一位高级 开发人员进行代码审查,他们实现了一种非常奇怪的设计模式。
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 的范围。但如果我必须回答这个问题,正确的方法是尽可能多地阅读并以开放的心态接近你的前辈。
关于c# - 自引用构造函数。这个图案有味道吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39039038/