A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Padrão Prototype Projeto de Sistemas de Software Luana Lachtermacher.

Apresentações semelhantes


Apresentação em tema: "Padrão Prototype Projeto de Sistemas de Software Luana Lachtermacher."— Transcrição da apresentação:

1 Padrão Prototype Projeto de Sistemas de Software Luana Lachtermacher

2 © LES/PUC-Rio Propósito -Criação de objetos específicos através de uma instância de um protótipo. -É um padrão de criação.

3 © LES/PUC-Rio Motivação Ao invés de criar diversos classes que diferem pouco, é possível fazer copias de uma instância(protótipo). Cada copia é utilizada de acordo com suas propriedades específicas.

4 © LES/PUC-Rio Aplicabilidade Sistema independente de como os produtos são criados, compostos e representados. Quando as classes são instanciadas em tempo de execução ou Para evitar a criação de classe hierárquica de fabricas que tem paralelo a hierarquia de produtos ou Quando instâncias da classe tem uma das poucas combinações de estados.

5 © LES/PUC-Rio Estrutura

6 © LES/PUC-Rio Participantes Prototype –Define a interface para se clonar ConcretePrototype –Implementa uma operação para se clonar. Client –Cria um novo objeto pedindo ao protótipo para se clonar.

7 © LES/PUC-Rio Colaborações O client pede ao protótipo para se clonar.

8 © LES/PUC-Rio Vantagens / Desvantagens Vantagem : –Maior abstração –Adição e remoção de produtos em tempo real. That's a bit more flexible than other creational patterns, because a client can install and remove prototypes at run-time. –Criação de novos objetos variando valores e estruturas. –Reduced subclassing. Factory Method (107) often produces a hierarchy of Creator classes that parallels the product class hierarchy. The Prototype pattern lets you clone a prototype instead of asking a factory method to make a new object.Factory Method (107) –Configurando uma aplicação com classes dinamicamente. Desvantagem: –Cada subclasses necessita implementar a operação de Clonar m que pode ser complicada se incluir objetos que não suportam copia ou que possuem referencias circulares.

9 © LES/PUC-Rio Exemplo Referência :

10 © LES/PUC-Rio Exemplo public abstract class Product implements Cloneable{ public Object clone() { Object clone = null; try { clone = super.clone(); } catch {} return clone; } public class Book extends Product { private int numberOfPages; public int getNumberOfPages() { return numberOfPages; } public void setNumberOfPages(int i){ numberOfPages = i; } } public class DVD extends Product { private int duration; public int getDuration() { return duration; } public void setDuration(int i) { duration = i; } } public class Application { public static void main(String[] args) { ProductCache.loadCache(); Book clonedBook = (Book) ProductCache.getProduct("B1"); DVD clonedDVD = (DVD) ProductCache.getProduct("D1"); } public class ProductCache { private static Hashtable productMap = new Hashtable(); public static Product getProduct(String productCode{ Product cachedProduct = (Product) productMap.get(productCode); return (Product) cachedProduct.clone(); } public static void loadCache() { // for each product run expensive query and instantiate product // productMap.put(productKey, product); products Book b1 = new Book(); productMap.put(b1.getSKU(), b1); DVD d1 = new DVD(); productMap.put(d1.getSKU(), d1); } }


Carregar ppt "Padrão Prototype Projeto de Sistemas de Software Luana Lachtermacher."

Apresentações semelhantes


Anúncios Google