Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <memory>
- #include <vector>
- using namespace std;
- class Car {
- public:
- Car(int price) : price_(price) {}
- int getPrice() const {
- return price_;
- }
- void sell() const {
- cout << "sell a car for : " << price_ << endl;
- }
- private:
- int price_;
- };
- class CarSelector {
- public:
- CarSelector();
- virtual ~CarSelector() = 0;
- virtual bool ShouldSelect (const Car& car) const = 0;
- };
- class HighStandardCarSelector:public CarSelector {
- public:
- bool ShouldSelect (const Car& car) const {
- if (car.getPrice() > 100000) {
- return true;
- } else {
- return false;
- }
- }
- };
- class LowStandardCarSelector:public CarSelector {
- public:
- bool ShouldSelect (const Car& car) const {
- if (car.getPrice() <= 100000) {
- return true;
- } else {
- return false;
- }
- }
- };
- class CarDealer {
- public :
- const Car* Suggest(const CarSelector& selector) {
- for (const Car& car: inventory_) {
- if (selector.ShouldSelect(car)) return &car;
- }
- return nullptr ;
- }
- private :
- std::vector <Car> inventory_;
- };
- class MyClient {
- public:
- void BuyCar() {
- CarDealer dealer;
- HighStandardCarSelector high_selector();
- const Car* candidate = dealer.Suggest(high_selector);
- if (candidate == nullptr ) {
- LowStandardCarSelector low_selector ( /* params */ );
- candidate = dealer.Suggest(low_selector);
- }
- }
- };
- int main() {
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment