gpt4 book ai didi

javascript - 如何构建类内部类的使用以避免循环引用?

转载 作者:行者123 更新时间:2023-11-28 03:13:41 26 4
gpt4 key购买 nike

我有以下引擎类,它使用两个扩展基本渲染器类的渲染器类:

import {RendererOne} from "./renderer-one";
import {RendererTwo} from "./renderer-two";

export class engine {

coordinates: number;
randomPropery: string;

produceRenderer (type, params) {

switch type {
case "map":
return new RendererOne(this, params)
case "other":
return new RendererTwo(this, params)
default:
return null;
}

}
}

BaseRenderer类定义如下:

import { engine} from "./index";


export abstract class BaseRenderer {

engine: engine;

constructor(engine: engine, params?) {

this.engine = engine;

}

//various drawing methods defined here which are common to all renderers

attach () {

const engine = this.engine;

//use engine defined methods and engine properties inside here

}

}

这是扩展 baseRenderer 的渲染器之一的粗略示例:

import {BaseRenderer} from "./base-renderer";
import { engine } from "./index";

export class RendererOne extends BaseRenderer {

madeUpProperty: string;
params: any;

constructor(engine: engine, params?) {
super(engine, params);
var derivedParams = this.params;
}


}

上面导致了循环引用,那么构造与上面类似的代码的正确方法是什么?

渲染器需要访问引擎对象属性及其方法。这是经过精简的玩具代码,因此请原谅任何粗略的拼写错误 - 希望它能传达我面临的问题。

最佳答案

你应该看看工厂设计模式,我认为它可能对你有帮助,你会有一个 RendererFactory 类,负责确定它应该创建哪种类型的渲染器。

编辑:这样您的引擎就不必导入两个类,而只需导入 Factory

Edit#2:另外,既然您在渲染器类的构造函数中传递了引擎,为什么还要导入它?

关于javascript - 如何构建类内部类的使用以避免循环引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59843795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com