TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Tecnologia em Análise e Desenvolvimento de Sistemas

Por:   •  25/8/2017  •  Exam  •  1.134 Palavras (5 Páginas)  •  264 Visualizações

Página 1 de 5

Curso: Tecnologia em Análise e Desenvolvimento de Sistemas

Disciplina: PPR003 - Padrões de Projetos

Professor: Leandro Costa Souza

Aluno: _________________________________ Data: 21/08/2017

Prova 1

⦁ Leia atentamente sua prova;

⦁ Responda as questões apenas na área reservada para isso;

⦁ Modelar e criar código de uma solução para um aplicativo que irá precisar atender uma quantidade enorme de usuários simultâneos.

Descreva uma solução para ganhar tempo na conexão com o banco de dados fazendo um reaproveitamento de conexões já abertas previamente. Nessa solução deve ser possível alternar, enquanto a aplicação estiver rodando, a maneira de gerenciar a criação/liberação/restrição de novas conexões.

O "reaproveitardor" não deve se preocupar com a forma como as conexões serão gerenciadas e devem existir pelo menos 3 maneiras diferentes de gerenciamento. O primeiro deve usar uma pilha (padrão) para gerenciar as conexões, o outro um fila e o terceiro uma ordem aleatória.

Para a construção de um novo tipo de gerenciamento deve ser necessário apenas se basear no gerenciador padrão e definir uma estrutura de dados ( da mesma maneira que foi feito para o fila e o aleatória).

Quando o gerenciamento for alterado no "reaproveitardor" isso deve ser refletido para a aplicação toda.

Resposta:

Para criar o reaproveitador o padrão utilizado será Object Pool.

A classe ConexaoPadraoPool tem um atributo conexoes do tipo List de conexoes, onde no construtor é definido que esse atributo será uma LinkedList e várias conexões são adicionadas nela. Nessa classe também é definido o método aquire que entrega para o cliente a última conexão da LinkedList, e o método release que adiciona na LinkedList a conexao devolvida.

ConexaoFilaPool é uma classe filha de ConexaoPadraoPool que também define no contrutor o atributo conexoes como LinkedLinked e e várias conexões são adicionadas nela, contudo o método aquire é reescrito para que devolva para o cliente a primeira conexao.

ConexaoAleatoriaPool também é filha de ConexaoPadraoPool e define no construtor um ArrayList e várias conexões são adicionadas nele, e o método aquire é reescrito para que devolva para o cliente uma conexão aleatória.

public interface Pool<T> {

T aquire();

void release(T t);

}

public class ConexaoPadraoPool implements Pool<Conexao> {

protected List<Conexao> conexoes;

public ConexaoPadraoPool() {

this.conexoes = new LinkedList<Conexao>();

this.conexoes.add(new Conexao("//string de conexao no banco de dados"));

this.conexoes.add(new Conexao("//string de conexao no banco de dados"));

this.conexoes.add(new Conexao("//string de conexao no banco de dados"));

this.conexoes.add(new Conexao("//string de conexao no banco de dados"));

this.conexoes.add(new Conexao("//string de conexao no banco de dados"));

this.conexoes.add(new Conexao("//string de conexao no banco de dados"));

this.conexoes.add(new Conexao("//string de conexao no banco de dados"));

this.conexoes.add(new Conexao("//string de conexao no banco de dados"));

this.conexoes.add(new Conexao("//string de conexao no banco de dados"));

this.conexoes.add(new Conexao("//string de conexao no banco de dados"));

this.conexoes.add(new Conexao("//string de conexao no banco de dados"));

}

@Override

public Conexao aquire() {

if(this.conexoes.size() > 0) {

return this.conexoes.remove(this.conexoes.size() - 1);

} else {

return null;

}

}

@Override

public void release(Conexao c) {

this.conexoes.add(c);

}

}

public class ConexaoFilaPool extends ConexaoPadraoPool {

public ConexaoFilaPool() {

this.conexoes = new LinkedList<Conexao>();

this.conexoes.add(new Conexao("//string

...

Baixar como (para membros premium)  txt (6.1 Kb)   pdf (45.5 Kb)   docx (571.4 Kb)  
Continuar por mais 4 páginas »
Disponível apenas no TrabalhosGratuitos.com