Uma biblioteca de classes possui uma implementação de lista encadeada com as seguintes propriedades:
![Enunciado 3151164-1](/images/concursos/1/8/6/186a0878-ac7d-d703-3979-95d26a4d9f9d.png)
Um projetista deseja reutilizar essa classe para implementar uma pilha, cuja interface é a seguinte:
![Enunciado 3151164-2](/images/concursos/a/e/c/aec77e47-1554-e736-a5d3-59b1e696cdf7.png)
Como as assinaturas das operações da classe Lista são diferentes das assinaturas das operações definidas na interface Pilha, foi criada uma segunda classe para viabilizar a reutilização. A solução encontrada foi a seguinte:
![Enunciado 3151164-3](/images/concursos/f/3/1/f3188126-31f5-c813-9e56-d1eece5544a9.png)
Os métodos push() e pop() da classe PilhaImplem são os seguintes:
public void push(Object elem) {
insereInicio(elem);
}
public Object pop() {
return retiraInicio();
}
Qual padrão de projeto foi empregado nessa solução?