Uma biblioteca de classes possui uma implementação de lista encadeada com as seguintes propriedades:

Um projetista deseja reutilizar essa classe para implementar uma pilha, cuja interface é a seguinte:

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:

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?