sweet1cris

Untitled

Sep 18th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include <iostream>
  2. #include <memory>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. class Car {
  8. public:
  9.     Car(int price) : price_(price) {}
  10.     int getPrice() const {
  11.         return price_;
  12.     }
  13.     void sell() const {
  14.         cout << "sell a car for : " << price_ <<  endl;
  15.     }
  16. private:
  17.     int price_;
  18. };
  19. class CarSelector {
  20. public:
  21.     CarSelector();
  22.     virtual ~CarSelector() = 0;
  23.     virtual bool ShouldSelect (const Car& car) const = 0;
  24. };
  25. class HighStandardCarSelector:public CarSelector {
  26. public:
  27.     bool ShouldSelect (const Car& car) const {
  28.         if (car.getPrice() > 100000) {
  29.             return true;
  30.         } else {
  31.             return false;
  32.         }
  33.     }
  34. };
  35. class LowStandardCarSelector:public CarSelector {
  36. public:
  37.     bool ShouldSelect (const Car& car) const {
  38.         if (car.getPrice() <= 100000) {
  39.             return true;
  40.         } else {
  41.             return false;
  42.         }
  43.     }
  44. };
  45. class CarDealer {
  46. public :
  47.     const Car* Suggest(const CarSelector& selector) {
  48.       for (const Car& car: inventory_) {
  49.         if (selector.ShouldSelect(car)) return &car;
  50.       }
  51.       return nullptr ;
  52.     }
  53.   private :
  54.   std::vector <Car> inventory_;
  55. };
  56.  
  57. class MyClient {
  58. public:
  59.     void BuyCar() {
  60.         CarDealer dealer;
  61.         HighStandardCarSelector high_selector();
  62.         const Car* candidate = dealer.Suggest(high_selector);
  63.         if (candidate == nullptr ) {
  64.             LowStandardCarSelector low_selector ( /* params */ );
  65.             candidate = dealer.Suggest(low_selector);
  66.         }
  67.     }
  68. };
  69. int main() {
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment