Um sistema está organizado segundo uma arquitetura em camada...
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: