我具有以下类结构。
const {EmployeeRequestExecutor} = require('./EmployeeRequestExecutor');
class EmployeeService {
fulfill(request){
EmployeeRequestExecutor.delegateEmployeeRequest(request);
}
}
module.exports = {EmployeeService};
const {HelpfulEmployee} = require('./HelpfulEmployee');
class EmployeeRequestExecutor {
static delegateEmployeeRequest(request){
let employee = new HelpfulEmployee();
employee.work(request);
}
static executeEmployeeRequest(request){
console.log('Executed', request);
}
}
module.exports = {EmployeeRequestExecutor};
const {EmployeeRequestExecutor} = require('./EmployeeRequestExecutor');
class HelpfulEmployee {
work(request){
EmployeeRequestExecutor.executeEmployeeRequest(request);
}
}
module.exports = {HelpfulEmployee};
如果这样做的话
let employeeService = new EmployeeService();
employeeService.fulfill(request);
我们得到TypeError:无法读取helpedEmployee.js中未定义的属性“ executeEmployeeRequest”:5:33
为什么在EmployeeRequestExecutor
内部使用这样的调用结构HelpfulEmployee.js
却未定义?
[HelpableEmployee和EmployeeRequestExecutor之间存在循环依赖关系(它们都彼此需要)。大多数情况下,循环依赖导致类设计问题。要修复它们,您应该重新考虑对象之间的信息流。
这是一个选项,但还有更多:
const {HelpfulEmployee} = require('./HelpfulEmployee');
class EmployeeRequestExecutor {
static delegateEmployeeRequest(request){
let employee = new HelpfulEmployee();
let requestExecutor= new EmployeeRequestExecutor();
employee.work(request, requestExecutor);
}
executeEmployeeRequest(request){
console.log('Executed', request);
}
}
module.exports = {EmployeeRequestExecutor};
class HelpfulEmployee {
work(request, requestExecutor){
requestExecutor.executeEmployeeRequest(request);
}
}
module.exports = {HelpfulEmployee};