#pragma once #include "common.hpp" class StrategyPerson { public: StrategyPerson(string name, int age, double weight, double height); void showMyself(); string m_name; int m_age; double m_weight; double m_height; }; // 策略的抽象 class ICompare { public: virtual bool comparable(StrategyPerson* person1, StrategyPerson* person2) = 0; }; // 具体的策略 class CompareByAge :public ICompare { public: bool comparable(StrategyPerson* person1, StrategyPerson* person2); }; class CompareByHeight :public ICompare { public: bool comparable(StrategyPerson* person1, StrategyPerson* person2); }; class CompareByWeight :public ICompare { public: bool comparable(StrategyPerson* person1, StrategyPerson* person2); }; class SortPerson { public: SortPerson(ICompare* pICompare); void sort(vector& personList); private: ICompare* m_CompareStrategy; };