Angular(2+)中的工厂到底是什么?
工厂是四人帮提到的设计模式之一(基本上他们写了一本关于他们发现的设计模式的书)。
设计模式帮助程序员以特定的方式解决常见的开发任务。
在这种情况下,工厂模式有助于实例化和创建对象。
它也被称为虚拟构造函数。
想一想,像这样:
假设您正在制作 2D 射击游戏,并且您必须从枪管中射出子弹。
new Bullet()
每次扣动扳机时,您都可以使用工厂来创建子弹,而不是实例化子弹,即WeaponsFactory.createInstance(BulletTypes.AK47_BULLET)
.
它变得高度可扩展,因为您所要做的就是更改枚举,工厂将为您制作。
您不必手动实例化它。
这就是 Angular 所做的,它会自动创建所有组件的工厂。这使得它的工作更容易。
是否存在开发人员从了解其工作方式中受益的场景?
您不必了解工厂的内部工作原理即可使用 Angular,但它对于动态创建组件很有用!
例如,很多*ngIf,或*ngSwitchCase可以用简单的动态生成组件来代替
组件可以像这样动态创建:
createComponent(type) {
this.container.clear();
const factory: ComponentFactory = this.resolver.resolveComponentFactory(AlertComponent);
this.componentRef: ComponentRef = this.container.createComponent(factory);
}
理解上述代码的参考:动态创建组件