1

たとえば、古典的なオブジェクト指向プログラミングでは、学生を表す文字列の配列を持つクラス School を使用できます (理想的なデータ構造ではなく、説明のみを目的としています)。それはこのように見えるかもしれません

class School {
    String name;
    String[] students;
}

次に、それぞれが異なる名前と異なる生徒を持つ一連の異なる学校をインスタンス化できます。この概念は Node.js にどのように変換されますか? School モジュールがあった場合、単一のインスタンスがアプリケーション全体で共有されます。私が最初に考えたのは、各学校を JSON オブジェクトとして表し、通常は School のインスタンスを渡す場所で基本的に JSON を渡すことです。これは正しい考えですか?代替アプローチはありますか?

4

3 に答える 3

3

状態を外部から非表示にする必要がある場合(つまり、保護された属性)、次のようにすることができます。

SchoolFactory = {
    create: function(name, students) {
        students = students || [];
        // return the accessor methods
        return {
            getName: function() {
                return name;
            },
            addStudent: function(student) {
                students.push(student);
            }
            // add more methods if you need to
        }
    }
}

var school = SchoolFactory.create('Hogwarts');
console.log(school); // will not display the name or students
school.addStudent('Harry');
于 2012-05-20T07:03:32.707 に答える
2

コンストラクターとインスタンス:

function School(name, students) {
  this.name = name;
  this.students = students || [];
};
School.prototype.enroll = function (student) {
  if (!~this.students.indexOf(student)) {
    this.students.push(student);
  } else {
    throw new Error("Student '" + student + "' already enrolled in " + this.name);
  }
};
var s = new School("Lakewood");
console.log(s.name);
console.log(s.students);
s.enroll("Me");
console.log(s.students);
于 2012-05-20T06:36:46.933 に答える
0

パターンについては説明しませんが、モジュールが気に入った場合は、学校のモジュールを宣言して、そのエクスポートに学校のクラスを含めることができます。クラスをインスタンス化するため、単一のインスタンスは共有されません

于 2012-05-20T06:36:15.723 に答える