/* * style.hpp * * Created on: Nov 18, 2010 * Author: mike * for use in Yale course CPSC 427a, Fall 2010 */ #pragma once #include "wallcabinet.hpp" #include "floorcabinet.hpp" // -------------------------------------------------------- // Abstract class class KitchenStyle { public: virtual ~KitchenStyle() { } virtual WallCabinet* getWallCabinet() const =0; virtual FloorCabinet* getFloorCabinet() const =0; }; // -------------------------------------------------------- // Concrete classes class ModernKStyle: public KitchenStyle { public: WallCabinet* getWallCabinet() const { return new ModernWallCabinet(); } FloorCabinet* getFloorCabinet() const { return new ModernFloorCabinet(); } }; class AntiqueKStyle: public KitchenStyle { public: WallCabinet* getWallCabinet() const { return new AntiqueWallCabinet(); } FloorCabinet* getFloorCabinet() const { return new AntiqueFloorCabinet(); } };