Executando verificação de segurança...
2

Tipo...

class ArmaDecorator implements Arma {
    protected $arma; 

    public function __construct(Arma $arma) {
        $this->arma = $arma;
    }

    /** @override */
    public function montar() {
        $this->arma->montar();
    }

}

Essa classe decorator, aponta o método montar para o objeto principal $this->arma->montar()...
Mas, esse método montar, é justamente o método que estou decorando, então faz sentido.
Mas, e se a arma tivesse mais um método calibrar, por exemplo, que não vai fazer parte do Decorator?

Carregando publicação patrocinada...