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

class PrinterState
{
public:
    PrinterState() { }

public:
    void add_paper(unsigned c) { m_papers += c; }

    bool print_page()
    {
        bool print_succeed = m_papers > 0;

        if (m_papers > 0) {
            --m_papers;
        }

        return print_succeed;
    }

    bool need_paper() const { return 0 == m_papers; }

private:
    static unsigned m_papers;
};

unsigned PrinterState::m_papers = 0;