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

📄 waitress.hpp

📁 深入浅出设计模式(书配套c++源代码)。包含20个设计模式的c++实现。
💻 HPP
字号:
#ifndef	_HFDP_CPP_ITERATOR_DINER_MERGER_WAITRESS_HPP_#define _HFDP_CPP_ITERATOR_DINER_MERGER_WAITRESS_HPP_namespace HeadFirstDesignPatterns {namespace Iterator {namespace DinerMerger {class Waitress {	PancakeHouseMenu* _pancakeHouseMenu;	DinerMenu* _dinerMenu; 	private: Waitress( const Waitress& ); // Disable copy constructor    private: void operator=( const Waitress& ); // Disable assignment operator	public: Waitress(PancakeHouseMenu* pancakeHouseMenu, DinerMenu* dinerMenu) :		_pancakeHouseMenu(pancakeHouseMenu), _dinerMenu(dinerMenu) {	}	public: void printMenu() {		Iterator<MenuItem>* pancakeIterator = _pancakeHouseMenu->createIterator();		Iterator<MenuItem>* dinerIterator = _dinerMenu->createIterator();		std::cout << "MENU\n----\nBREAKFAST" << std::endl;		printMenu(pancakeIterator);		std::cout << "\nLUNCH" << std::endl;		printMenu(dinerIterator);	}	private: void printMenu( Iterator<MenuItem>* iterator ) {		while( iterator->hasNext() ) {			MenuItem* menuItem = dynamic_cast< MenuItem* >( iterator->next() );			std::cout << menuItem->getName() << ", ";			std::cout << menuItem->getPrice() << " -- ";			std::cout << menuItem->getDescription() << std::endl;		}	}	public: void printVegetarianMenu() {		printVegetarianMenu( _pancakeHouseMenu->createIterator() );		printVegetarianMenu( _dinerMenu->createIterator() );	} 	public: bool isItemVegetarian( std::string name) {		Iterator<MenuItem>* breakfastIterator = _pancakeHouseMenu->createIterator();		if( isVegetarian(name, breakfastIterator) ) {			return true;		}		Iterator<MenuItem>* dinnerIterator = _dinerMenu->createIterator();		if( isVegetarian(name, dinnerIterator) ) {			return true;		}		return false;	}	private: void printVegetarianMenu( Iterator<MenuItem>* iterator ) {		while( iterator->hasNext() ) {			MenuItem* menuItem = dynamic_cast< MenuItem* >( iterator->next() );			if( menuItem->isVegetarian() ) {				std::cout << menuItem->getName() << ", ";				std::cout << menuItem->getPrice() << " -- ";				std::cout << menuItem->getDescription() << std::endl;			}		}	}	private: bool isVegetarian( std::string name, Iterator<MenuItem>* iterator ) {		while( iterator->hasNext() ) {			MenuItem* menuItem = dynamic_cast< MenuItem* >( iterator->next() );			if( menuItem->getName().compare( name ) == 0 ) {				if( menuItem->isVegetarian() ) {					return true;				}			}		}		return false;	}};} // namespace DinerMerger} // namespace Iterator} // namespace HeadFirstDesignPatterns#endif

⌨️ 快捷键说明

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