Design Patterns Editora Nova Babel
Design Patterns Editora Nova Babel
Introdução
Analisando os requisitos e a estrutura do sistema da Editora Nova Babel, identificamos
que a implementação de Design Patterns pode otimizar o funcionamento da aplicação,
proporcionando maior eficiência, organização e flexibilidade.
Os Design Patterns trazem soluções testadas e aprovadas para problemas recorrentes
no desenvolvimento de software, permitindo a reutilização de código, facilitando a
manutenção e possibilitando a escalabilidade do sistema.
Para atender melhor às necessidades da editora, selecionamos três padrões que se
encaixam nos desafios apresentados: Factory, Adapter e Observer Patterns.
Factory
O Factory Pattern é um padrão de criação que utiliza uma interface ou classe abstrata
para instanciar objetos de subclasses específicas. Ele permite que a lógica de criação
de objetos seja centralizada, separando a criação do uso, o que traz flexibilidade e
facilita alterações no sistema.
Aplicação na Editora:
Na Editora Nova Babel, o Factory Pattern pode ser utilizado para gerenciar a criação de
diferentes tipos de relatórios ou objetos relacionados aos livros e às livrarias. Por
exemplo:
• Relatórios financeiros, de vendas ou de estoque.
• Objetos de empréstimos ou de vendas, que compartilham atributos básicos,
mas possuem comportamentos específicos.
Exemplo de Uso:
// Exemplo de uso:
Funcionario funcionario1 = new Funcionario("João");
Funcionario funcionario2 = new Funcionario("Maria");
estoque.alterarQuantidade(8);
Adapter Pattern
O Adapter Pattern é um padrão estrutural que permite que classes com interfaces
incompatíveis trabalhem juntas. Ele funciona como uma ponte entre duas interfaces,
convertendo a interface de uma classe em outra que o cliente espera.
Aplicação na Editora:
Na Editora Nova Babel, esse padrão pode ser utilizado para integrar diferentes
sistemas de livrarias ao sistema da editora. Por exemplo, se algumas livrarias utilizam
um sistema de pedidos que gera arquivos XML, enquanto outras usam JSON, o Adapter
pode ser usado para padronizar esses formatos e torná-los compatíveis com o sistema
da editora.
Isso facilita a integração de livrarias parceiras, sem necessidade de alterar os sistemas
originais delas, aumentando a interoperabilidade.
Exemplo de Uso:
@Override
public void processarPedido() {
String json = "{pedido: 'Livro XYZ', quantidade: 10}";
pedidoJson.carregarJson(json);
}
}
@Override
public void processarPedido() {
String xml = "<pedido><item>Livro
XYZ</item><quantidade>10</quantidade></pedido>";
pedidoXml.carregarXml(xml);
}
}
System.out.println("Processando pedidos...");
pedidoJson.processarPedido();
pedidoXml.processarPedido();
}
}