Advertisement
kirill_76rus

07/04

Apr 7th, 2020
365
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. #include<iostream>
  2. #include<cassert>
  3. #include<string>
  4. #include<vector>
  5. using namespace std;
  6. class Working {
  7. public:
  8. void info() {
  9. cout <<"Working\n";
  10.  
  11. }
  12. };
  13. class Customer {
  14. public:
  15. void info() {
  16. cout << "Customer\n";
  17. }
  18. };
  19. class Boss {
  20. public:
  21. void info() {
  22. cout << "Boss\n";
  23. }
  24. };
  25. class Company {
  26. public:
  27. vector <Working> va;
  28. vector <Customer> vs;
  29. vector <Boss> vw;
  30. void info() {
  31. for (auto& s: va) {
  32. s.info();
  33. }
  34.  
  35. for (auto& t: vs) {
  36. t.info();
  37. }
  38. for (auto& w : vw) {
  39. w.info();
  40. }
  41. }
  42. };
  43. class CompanyBuilder {
  44. protected:
  45. Company* p;
  46. public:
  47. CompanyBuilder() :p(0) {};
  48. virtual void createCompany() {};
  49. virtual void buildWorking() {};
  50. virtual void buildCustomer() {};
  51. virtual void buildBoss() {};
  52. virtual Company* getCompany() {
  53. return p;
  54. };
  55.  
  56. };
  57. class CompanyBuilder :public
  58. CompanyBuilder {
  59. public:
  60. void createArmy() {
  61. p = new Company;
  62. }
  63. void buildWorking() {
  64. p->va.push_back(Working());
  65.  
  66. }
  67. void buildCustomer() {
  68. p->vs.push_back(Customer());
  69. }
  70. void buildBoss() {
  71. p->vw.push_back(Boss());
  72. }
  73.  
  74. };
  75. class CompanyBuilder :public
  76. CompanyBuilder {
  77. public:
  78. void createCompany() {
  79. p = new Company;
  80. }
  81. void buildWorking() {
  82. p->va.push_back(Working());
  83.  
  84. }
  85. void buildCustomer() {
  86. p->vs.push_back(Customer());
  87. }
  88. void buildBoss() {
  89. p->vw.push_back(Boss());
  90. }
  91.  
  92. };
  93. class Director {
  94. public:
  95. Company* createCompany(CompanyBuilder& builder)
  96. {
  97. builder.createCompany();
  98. builder.buildWorking();
  99. builder.buildCustomer();
  100. builder.buildBoss();
  101. //return (builder.getCompany());
  102.  
  103.  
  104. }
  105. };
  106. int main() {
  107. Director dir;
  108. RomanArmyBuilder rb;
  109. Company* ra = dir.createCompany(rb);
  110. ra->info();
  111. CompanyBuilder sb;
  112. Company* sa = dir.createCompany(sb);
  113. sa->info();
  114. return 0;
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement