⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gumballmachine.hpp

📁 深入浅出设计模式(书配套c++源代码)。包含20个设计模式的c++实现。
💻 HPP
字号:
#ifndef	_HFDP_CPP_STATE_GUMBALL_STATE_WINNER_GUMBALL_MACHINE_HPP_#define _HFDP_CPP_STATE_GUMBALL_STATE_WINNER_GUMBALL_MACHINE_HPP_namespace HeadFirstDesignPatterns {namespace State {namespace GumballStateWinner {class GumballMachine { 	private: State* _soldOutState;	private: State* _noQuarterState;	private: State* _hasQuarterState;	private: State* _soldState;	private: State* _winnerState; 	private: State* _state;	private: int _count; 	private: GumballMachine( const GumballMachine& ); // Disable copy constructor	private: void operator=( const GumballMachine& ); // Disable assignment operator	public: explicit GumballMachine(int numberGumballs );	public: ~GumballMachine() {		delete _soldOutState;		delete _noQuarterState;		delete _hasQuarterState;		delete _soldState;		delete _winnerState;	}	public: void insertQuarter() const {		_state->insertQuarter();	}	public: void ejectQuarter() const {		_state->ejectQuarter();	}	public: void turnCrank() const {		_state->turnCrank();		_state->dispense();	}	public: void setState( State* state ) { assert( state );		_state = state;	}	public: void releaseBall() {		std::cout << "A gumball comes rolling out the slot..." << std::endl;		if( _count != 0) {			_count--;		}	}	public: int getCount() const {		return _count;	}	public: void refill( int count ) { assert( count > 0 );		_count = count;		_state = _noQuarterState;	}    public: State* getState() const {        return _state;    }    public: State* getSoldOutState() const {        return _soldOutState;    }    public: State* getNoQuarterState() const {        return _noQuarterState;    }    public: State* getHasQuarterState() const {        return _hasQuarterState;    }   public: State* getSoldState() const {        return _soldState;    }    public: State* getWinnerState() const {        return _winnerState;    }	public: std::string toString() const {		std::stringstream value; 		value << std::endl << "Mighty Gumball, Inc.";		value << std::endl << "C++-enabled Standing Gumball Model #2004";		value << std::endl << "Inventory: " << _count << " gumball";		if( _count > 1 ) {			value << "s";		}		value << std::endl;		value << "Machine is " << _state->toString() << std::endl;		return value.str();	}};} // namespace GumballStateWinner} // namespace State} // namespace HeadFirstDesignPatterns#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -