Eu acredito que você está com o pensamento equivocado sobre como funciona o Design Pattern Decorators.

Veja se este exemplo na Wikipedia ajuda a esclarecer como você deve fazer: https://pt.wikipedia.org/wiki/Decorator

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?