3. Which design pattern is used in the following code?

class Elevator
{
public:
    virtual void move_to(int level) = 0;
    virtual void open_doors() = 0;
    virtual void close_doors() = 0;
    virtual ~Elevator() { }
};

namespace third_party
{

class Elevator
{
public:
    Elevator() { }

public:
    int get_current_level() const;
    void move_by(int level);
    void open_doors();
    void close_doors();
};

}

class MyElevator
    : public Elevator
{
public:
    void move_to(int level)
    {
        const int d = level - m_elevator.get_current_level();
        m_elevator.move_by(d);
    }
    void open_doors() { m_elevator.open_doors(); }
    void close_doors() { m_elevator.close_doors(); }

private:
    third_party::Elevator m_elevator;
};