#ifndef __FACTORY_HPP__ #define __FACTORY_HPP__ #include using std::shared_ptr; namespace cs427_527 { class ISwinePlayer; class PlayerFactory { public: virtual ~PlayerFactory() = default; virtual shared_ptr makeAggressivePlayer() const = 0; virtual shared_ptr makeNormalPlayer() const = 0; virtual shared_ptr makeConservativePlayer() const = 0; }; class BasicPlayerFactory : public PlayerFactory { public: virtual shared_ptr makeAggressivePlayer() const; virtual shared_ptr makeNormalPlayer() const; virtual shared_ptr makeConservativePlayer() const; }; class AdaptivePlayerFactory : public PlayerFactory { public: virtual shared_ptr makeAggressivePlayer() const; virtual shared_ptr makeNormalPlayer() const; virtual shared_ptr makeConservativePlayer() const; }; } #endif