Jump to content
Sign in to follow this  
mirador_22

Criação de objetos (factory) javascript

Recommended Posts

mirador_22

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

function Pessoa(id, nome) {
 this.id = id;
 this.nome = nome;
}

Classe Aluno extends Pessoa

function Aluno(id, nome) {
 Pessoa.call(this, id, nome);
}

Classe Professor extends Pessoa

function Professor(id, nome) {
 Pessoa.call(this, id, nome);
}

utilizando a função de factory para criar aluno e professor

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;
 }
}

Classe Escola com uma lista de pessoas[alunos e professores]

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");
}
 }
}

teste no cmd, node app.js

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"); //

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

Share this post


Link to post
Share on other sites
HappyHippyHippo

olha bem para esta parte do código:

console.log("\nID: "+this.pessoas[this.pessoaCriada.id].id+"\nNome: "+this.pessoas[this.pessoaCriada.id].nome);
//                                         A
//                                         |
//                             qual é este valor nas 5 iterações das pessoas ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.