Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — CESGRANRIO 2012
Arquitetura de SoftwarePadrões de projeto (Design Patterns)
- Código
- cg049467
- Banca
- CESGRANRIO
- Órgão
- Petrobras
- Ano
- 2012
- Nível
- Superior
- Cargo
- Analista de Sistemas Júnior - Engenharia de Software
Um sistema está organizado segundo uma arquitetura em camadas, no qual cada camada corresponde a um pacote Java. A camada de serviços, ServiceLayer, possui dezenas de classes, que colaboram entre si para fornecer os serviços necessários. Para facilitar o acesso aos serviços disponíveis, o pacote em questão disponibiliza algumas interfaces, que agrupam operações de acordo com a natureza do serviço. As classes que implementam esses serviços, entretanto, não são visíveis fora do pacote. Dessa forma, o pacote fornece uma classe pública, Services, onde existem métodos estáticos que retornam objetos que implementam os serviços disponíveis. O código Java a seguir exemplifica o que foi descrito.package ServiceLayer;public interface ServiceA { int srvA1(); int srvA2(); int srvA3();}package ServiceLayer;public interface ServiceB { int srvB1(); int srvB2();}package ServiceLayer;public class Services { private Services() { }public static ServiceA serviceA() { return new CL01(); } public static ServiceB serviceB() { return new CL01(); }}package ServiceLayer;class CL01 implements ServiceA, ServiceB{ public int srvA1() { // código irrelevante } public int srvA2() { // código irrelevante } public int srvA3() { // código irrelevante } public int srvB1() { // código irrelevante } public int srvB2() { // código irrelevante }}O trecho de código a seguir mostra como os serviços disponíveis são executados.{ ServiceA s1=Services.serviceA(); ServiceB s2=Services.serviceB(); s1.srvA1(); s2.srvB1(); // código irrelevante}Essa arquitetura usou variações de dois padrões de projeto conhecidos, que são:
- AAdapter e Façade
- BCommand e Façade
- CCommand e Singleton
- DFaçade e Factory Method
- EFactory Method e Singleton