使用参数创建类或单独调用其方法

时间:2017-10-11 14:55:07

标签: javascript oop design-patterns

在控制器类Main中实例化新类时,应如何构造JS代码。

解决方案:

答:在创建新类时传递参数 - new Options(args) - 让Options的构造函数调用自己的方法。

B:创建新类并在对象上调用类的方法。

稍后我会在其他课程中使用Options中的属性。

// A
class Main {
 constructor(options) {
    this.options = new Options(options);

    { firstProperty, secondProperty } = this.options;
    this.another = new Another(firstProperty, secondProperty);
  }
}

// B
class Main {
 constructor(options) {
    this.options = new Options();
    const firstProperty = this.options.methodA(options);
    const secondProperty = this.options.methodB(options);

    this.another = new Another();
    const anotherPropety = this.another.methodA(firstProperty);
    (...)
  }
}

1 个答案:

答案 0 :(得分:0)

出于解耦的目的,我建议第三种选择。

//main.js
class Main {
  constructor(options) {
    this.options = options;
    // all instances of class would have:
    this.options.foo = 'bar'
  }

  method() {
    return `${this.options.foo} - ${this.options.setup}`
  }
}

// example.js
const options = new Options({setup: 'options'});
const example = new Main(options);
console.log(example.method());

这使您可以将依赖项注入给定的类,这使得为代码编写测试变得更加简单。它还为您提供了(只要您维护一个通用界面)以后的Options替换NewAwesomeOptions的好处,而不必在任何地方找到您可能已将其硬编码到类中的任何地方。< / p>