正确传递实例参数的方法

时间:2017-10-18 14:58:40

标签: javascript oop design-patterns

假设我管理了pizzera,我想知道当天的第一个订单何时到达。

我有两个类:Orders(存储订单)和Events。我正在调用一个函数getCurrentEvents()来检查订单是否是当天的第一个订单。

问:我应该何时将Orders参数传递给getCurrentEvents()?此外,你能否给我一个提示,这个主题是如何调用的,所以我可以阅读更多有关类似设计问题的内容?

第一种方法

在创建Orders实例时传递Events,直接在函数

中使用它
class Pizzeria {
  constructor() {
    this.orders = new Orders()
    // pass Orders here
    this.events = new Events(this.orders)
  }

  getCurrentEvents() {
    this.events.getCurrentEvents();
  }
}

class Events {
  constructor(orders) {
    this.orders = orders;
  }

  getCurrentEvents() {
    this.firstOderOfTheDay();
  }

  firstOrderOfTheDay() {
    ...do something with this.orders
  }
}

第二种方法

在创建Orders实例时再次传递Events,但将其传递给函数

class Pizzeria {
  constructor() {
    this.orders = new Orders()
    this.events = new Events(this.orders)
  }

  getCurrentEvents() {
    this.events.getCurrentEvents();
  }
}

class Events {
  constructor(orders) {
    this.orders = orders;
  }

  getCurrentEvents() {
    // pass Orders here
    this.firstOderOfTheDay(this.orders);
  }

  firstOrderOfTheDay({ orders }) {
    ...do something with passed orders
  }
}

第三种方法

在创建Events实例后传递它

class Pizzeria {
  constructor() {
    this.orders = new Orders()
    this.events = new Events()
  }

  getCurrentEvents() {
    // pass Orders here
    this.events.getCurrentEvents(this.orders);
  }
}

class Events {
  getCurrentEvents(orders) {
    this.firstOderOfTheDay(orders);
  }

  firstOrderOfTheDay({ orders }) {
    ...do something with orders
  }
}

0 个答案:

没有答案