我正在为高级开发人员进行代码审查,他们已经实现了一个非常好奇的设计模式.
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的范围.但如果我必须回答这个问题,那么正确的方法就是尽可能多地阅读并以开放的心态接近你的老人.