Design Patterns (Factory Method, Prototype, Singleton)



Documentos relacionados
Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

TCC Prof.: Leandro A. F. Fernandes Conteúdo: Tipos Genéricos

FINAL: CÓDIGO-FONTE DA MIDLET

Prototype, um Design Patterns de Criação

public void setdata(data d) { data = d;

Interfaces. Interfaces: Exemplo. ! São um mecanismo poderoso para ter bons desenhos pois permitem separar contratos das implementações

Programação de Computadores - I. Profª Beatriz Profº Israel

insfcanceof new public switch transient while byte continue extends for int null

A Linguagem Java. Alberto Costa Neto DComp - UFS

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

Programação Orientada a Objetos (DPADF 0063)

Curso - Padrões de Projeto Módulo 2: Padrões de Criação

Evento.java. package dominio;

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Classes Abstratas e Interfaces

Invocação Remota MC704

Encapsulamento de Dados

Programação por Objectos. Java

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Técnicas de Programação II

Pilhas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

Especialização em Engenharia de Software - CEUT

Java Threads. Introdução

Objetivo do programa: Implementação de um analisador de Logs do Servidor Web com base nos requisitos da unidade curricular de Estatística.

Um Exemplo de Refatoração. Prof. Alberto Costa Neto DComp/UFS

4 - Padrões de Construção

Java Básico. Matrícula de Alunos. Marco Antonio, Arquiteto de Software TJDF Novembro/2005

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Módulo 07 Características Avançadas de Classes

Filas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Desenvolvimento Web com Framework Demoiselle versão 1.0

Análise e Projeto Orientados por Objetos

Programação Orientada a Objetos em Java

Programação Orientada a Objetos II

Java 2 Standard Edition Como criar classes e objetos

Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

MÓDULO 4 SWING Parte 3

Uma Introdução aos Padrões de Projeto com Java. Roberto Willrich INE-CTC-UFSC

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Exercícios de Revisão Java Básico

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br)

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

Unidade IV: Ponteiros, Referências e Arrays

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico

Análise e Projeto Orientados por Objetos

AlarmManager. Programação em Dispositivos Móveis (PDM) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

SISTEMAS DISTRIBUÍDOS

Gerador de código JSP baseado em projeto de banco de dados MySQL

O programa abaixo exemplifica o uso da classe Image para carregar e mostrar uma imagem localizada em um arquivo.

Prática de Programação J2ME (15) Especialização em Desenvolvimento Web com Interfaces Ricas

INF 1007 Programação II

5 Caso de estudo O cartão fidelidade

Capítulo 8. Introdução UML

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Profa. Thienne Johnson

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Padrões de Projeto e Persistência com DAO

Programação Orientada a Objetos em java. Polimorfismo

Programação Orientada a Objetos em Java

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

Reuso com Herança a e Composiçã

Templates e Pilhas. 1. Introdução

Código-Fonte da Prática 02

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Padrões de Projeto. Singleton

2. O gerador de código estende DepthFirstAdapter implementando a interpretação que gerará código Jasmin a partir de Smallpascal.

Programação Orientada a Objetos

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Padrões de Desenho Engenharia de Software

Utilização do Appia. Tolerância a Faltas Distribuída 2003/04. Nuno Carvalho nunomrc@di.fc.ul.pt

Fundamentos de Programaçã. ção Concorrente

Programação para Celular com Java Tipos de Tela

Transcrição:

DesignPatterns (FactoryMethod,Prototype,Singleton) JoãoAntónioPaz LuísMiguelClaro AlbertoManuelGomes N.º12812 N.º12817 N.º12818

FACTORYMETHOD Padrãoquedefineumainterfaceparacriaçãodeobjectos,masdeixaassubclassesdecidirque classedeveminstanciar.ouseja,opadrãofactorymethodpermiteainstanciaçãodaclasse sejadiferentenassuassubclasses. EstruturadopadrãoFactoryMethod SuponhamosquetemosumaclasseabstractaLivrariaquetemLivros.Possuiométodo CriarLivro(),queretornaumnovoLivro.SecriarmosumasubclassedeLivrariaquedefinao métodocriarlivro(),estemétododeveretornarumasubclassedelivro.ométodocriarlivro passaaserresponsávelpelofabricodeobjectos. Exemplodocódigo public abstract class Livraria { public ArrayLis<Livro> livros; public abstract Livro CriarLivro(); public class Quiosque extends Livraria { public Livro CriarLivro() { return (new Jornal()); public class Livro { public class Jornal extends Livro { OpadrãoFactoryMethoddeveserusadoquando: Aclassenãoconsegueanteciparaclassedeobjectosquedevecriar. Aclassequerassuassubclassesparaespecificarosobjectosquecria. Asclassespassamaresponsabilidadeparaumadasváriassubclasses,equersesaber quesubclassetemessaresponsabilidade.

PROTOTYPE Opadrãoprototypepermitecriarnovosobjectosatravésdeumacópiadeumprotótipo. Oprotótipopermiteespecificarotipodeobjectosacriar. Opadrãoprototypeéusado: quandosepretendequeaaplicaçãosejaindependentenomodocomooscomponentessão criados,definidosporcomposiçãoerepresentados; quandoasclassesainstanciarsãoespecificadaemtempodeexecução,porexemplo,através deumcarregamentodinâmico; parapermitiraconstruçãodeclasseshierárquicasdefabrico; quandoasinstânciasdeumaclassetêmpoucascombinaçõesdeestado.émaisconveniente instalaronúmerocorrespondentedeprotótiposdoqueinstalarmanualmenteaclassedecada vezparaumestadoespecífico. AclassePrototypedefineumainterfaceparaimplementarclone. AclasseConcretePrototypeimplementaaoperaçãodeclone. AclasseClientcriaumnovoobjectopedindoaoPrototypepararealizaroclone. public abstract class Multimedia implements Cloneable{ private String descricao; public Multimedia clone() { Multimedia clone = null; try{ clone=(multimedia)super.clone(); clone.setdescricao(""); catch(clonenotsupportedexception cnse) { cnse.printstacktrace(); return clone; public String getdescricao() { return descricao; public void setdescricao(string descricao) { this.descricao=descricao;

public class CD extends Multimedia { private int duracao; public int getduracao() { return duracao; public void setduracao(int duracao) { this.duracao=duracao; public CD clone(){ CD cd = (CD) super.clone(); return cd; public String tipo() { return new String("sou um cd"); public class DVD extends Multimedia{ private int tamanho; public int gettamanho() { return tamanho; public void settamanho(int tamanaho) { this.tamanho = tamanaho; public String tipo() { return new String("sou um dvd"); public DVD clone() { DVD dvd = (DVD) super.clone(); return dvd; public class MultimediaCreator { private Multimedia cd = new CD(); private Multimedia dvd = new DVD(); public MultimediaCreator() { cd.setdescricao("cd"); dvd.setdescricao("dvd"); public Multimedia getmultimedia(string tipo) { if(tipo.equals("cd")) { return (Multimedia) cd.clone(); else if(tipo.equals("dvd")) { return (Multimedia) dvd.clone(); return null; public class Cliente { MultimediaCreator mc = new MultimediaCreator(); CD c = (CD)mc.getMultimedia("cd"); DVD d = (DVD)mc.getMultimedia("dvd"); System.out.println(c.tipo); System.out.println(d.tipo);

SINGLETON Singletonéumpadrãodeprojectosimples. OpadrãoSingletonasseguraqueumaclassetemapenasumaúnicainstânciaeforneceum pontoglobaldeacessobemconhecido. Éimportanteparaalgumasclassesterumaúnicainstância.Porexemplo,sódevehaverum sistemadeficheiroseumúnicogestordejanelas. Paraassegurarqueaclassetemunicamenteumainstânciapode secriadaumavariávelglobal queindicaseaclassejáfoiounãoinstanciadamasestasoluçãonãogaranteaunicidadeda instância.amelhorformaétornaraprópriaclasseresponsávelpelaúnicainstânciadamesma, queéopadrãosinpleton.destaformaédefinidaumaoperaçãogetinstance()quepermite acederaumaúnicainstânciadaclasse. OpadrãoSingletondeveserusadoquando: Fornecessáriohaverumaúnicainstânciadeumaclasseeessainstânciatemde facultarumpontodeacessobemconhecido; Ainstância(única)forextensívelatravésdesubclasses,possibilitandoousodeuma instânciaestendidasemalterarocódigo. AestruturadopadrãoSingletonéaseguinte Exemplodecódigo public final class Pope { private static Pope instance = null; public static Pope getinstance() { if (instance==null) { instance = new Pope(); return instance; public class NameOfPope { Pope papa; papa=pope.getinstance();