#include <iostream>
#include <memory>
using namespace std;
class przycisk{
public:
int szerokosc;
int wysokosc;
virtual ~przycisk() = default;
virtual void infoprzycisk() = 0;
};
class motyw{
public:
string kolor;
virtual ~motyw() = default;
virtual void infomotyw() = 0;
};
class winprzycisk: public przycisk{
public:
virtual void infoprzycisk() override{
cout<<"Przycisk w stylu windows\n";
cout<<"Szerokosc: "<<szerokosc<<", wysokosc: "<<wysokosc<<endl;
}
};
class winmotyw: public motyw{
public:
virtual void infomotyw() override{
cout<<"Motyw w stylu windows\n";
cout<<"Kolor: "<<kolor<<endl;
}
};
class macprzycisk: public przycisk{
public:
virtual void infoprzycisk() override{
cout<<"Przycisk w stylu mac\n";
cout<<"Szerokosc: "<<szerokosc<<", wysokosc: "<<wysokosc<<endl;
}
};
class macmotyw: public motyw{
public:
virtual void infomotyw() override{
cout<<"Motyw w stylu mac\n";
cout<<"Kolor: "<<kolor<<endl;
}
};
class fabryka{
public:
virtual ~fabryka() = default;
virtual unique_ptr<przycisk> stworzprzycisk() = 0;
virtual unique_ptr<motyw> stworzmotyw() = 0;
};
class fabrykawin : public fabryka{
public:
unique_ptr<przycisk> stworzprzycisk() override{
return make_unique<winprzycisk>();
}
unique_ptr<motyw> stworzmotyw() override{
return make_unique<winmotyw>();
}
};
class fabrykamac : public fabryka{
public:
unique_ptr<przycisk> stworzprzycisk() override{
return make_unique<macprzycisk>();
}
unique_ptr<motyw> stworzmotyw() override{
return make_unique<macmotyw>();
}
};
// Funkcja pomocnicza przyjmująca fabrykę przez referencję
void gotowe(fabryka& Fabryka) {
auto p = Fabryka.stworzprzycisk();
auto m = Fabryka.stworzmotyw();
p->szerokosc = 100;
p->wysokosc = 30;
m->kolor = "Niebieski";
p->infoprzycisk();
m->infomotyw();
}
int main() {
fabrykawin fabrykaWindows;
gotowe(fabrykaWindows); // Wywołanie funkcji dla Windows
cout << "-----------------\n";
fabrykamac fabrykaMac;
gotowe(fabrykaMac); // Wywołanie funkcji dla Mac
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: