Olá, Estou tendo a tentar criar dois objetos do tipo pessoa usando Factory e na primeira tentativa eu criar o primeiro elemento e a segunda tentativa em vez de criar o segundo elemento cria um novo elemento, mas com as mesmas características que o primeiro elemento
Classe Pessoa, que será uma super classe
Código :
Classe Aluno extends Pessoa
Código :
Classe Professor extends Pessoa
Código :
utilizando a função de factory para criar aluno e professor
Código :
Classe Escola com uma lista de pessoas[alunos e professores]
Código :
teste no cmd, node app.js
Código :
e obtive esse resultado
--------------------------------------
C:\MKO>node app.js
ID: 0
Nome: Jonh
ID: 1
Nome: Bob
ID: 2
Nome: Jerry
ID: 0
Nome: Jonh
ID: 1
Nome: Bob
C:\MKO>
------------------------------------
e não aparece os nomes dos professores Tom e Peter, ou se for apenas para um tipo de pessoa funciona tudo bem e se quiser criar outro tipo de pessoa, retorna o valor das pessoas que já se encontram criadas
Classe Pessoa, que será uma super classe
Código :
function Pessoa(id, nome) {
this.id = id;
this.nome = nome;
}
this.id = id;
this.nome = nome;
}
Classe Aluno extends Pessoa
Código :
function Aluno(id, nome) {
Pessoa.call(this, id, nome);
}
Pessoa.call(this, id, nome);
}
Classe Professor extends Pessoa
Código :
function Professor(id, nome) {
Pessoa.call(this, id, nome);
}
Pessoa.call(this, id, nome);
}
utilizando a função de factory para criar aluno e professor
Código :
function Factory() {
var idAluno = 0;
var idProfessor = 0;
this.criarPessoa = function(tipo, nome) {
var pessoa = new Pessoa();
switch (tipo) {
case "1":
pessoa = new Aluno(idAluno++, nome);
break;
case "2":
pessoa = new Professor(idProfessor++, nome);
break;
}
return pessoa;
}
}
var idAluno = 0;
var idProfessor = 0;
this.criarPessoa = function(tipo, nome) {
var pessoa = new Pessoa();
switch (tipo) {
case "1":
pessoa = new Aluno(idAluno++, nome);
break;
case "2":
pessoa = new Professor(idProfessor++, nome);
break;
}
return pessoa;
}
}
Classe Escola com uma lista de pessoas[alunos e professores]
Código :
function Escola(id) {
this.pessoas = [];
this.factory = new Factory();
this.pessoaCriada = null;
this.criarProfessorOuAluno = function(tipo,nome) {
if (tipo!== null) {
this.pessoaCriada = this.factory.criarPessoa(tipo,nome);
this.pessoas.push(this.pessoaCriada);
console.log("\nID: "+this.pessoas[this.pessoaCriada.id].id+
"\nNome: "+this.pessoas[this.pessoaCriada.id].nome);
} else {
console.log("não pode ser vazio");
}
}
}
this.pessoas = [];
this.factory = new Factory();
this.pessoaCriada = null;
this.criarProfessorOuAluno = function(tipo,nome) {
if (tipo!== null) {
this.pessoaCriada = this.factory.criarPessoa(tipo,nome);
this.pessoas.push(this.pessoaCriada);
console.log("\nID: "+this.pessoas[this.pessoaCriada.id].id+
"\nNome: "+this.pessoas[this.pessoaCriada.id].nome);
} else {
console.log("não pode ser vazio");
}
}
}
teste no cmd, node app.js
Código :
var escola = new Escola(1);
escola.criarProfessorOuAluno("1","Jonh"); //
escola.criarProfessorOuAluno("1","Bob"); //
escola.criarProfessorOuAluno("1","Jerry"); //
escola.criarProfessorOuAluno("2","Tom"); //
escola.criarProfessorOuAluno("2","Peter"); //
escola.criarProfessorOuAluno("1","Jonh"); //
escola.criarProfessorOuAluno("1","Bob"); //
escola.criarProfessorOuAluno("1","Jerry"); //
escola.criarProfessorOuAluno("2","Tom"); //
escola.criarProfessorOuAluno("2","Peter"); //
e obtive esse resultado
--------------------------------------
C:\MKO>node app.js
ID: 0
Nome: Jonh
ID: 1
Nome: Bob
ID: 2
Nome: Jerry
ID: 0
Nome: Jonh
ID: 1
Nome: Bob
C:\MKO>
------------------------------------
e não aparece os nomes dos professores Tom e Peter, ou se for apenas para um tipo de pessoa funciona tudo bem e se quiser criar outro tipo de pessoa, retorna o valor das pessoas que já se encontram criadas