-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAbstractFactoryMain.java
More file actions
233 lines (204 loc) · 6.6 KB
/
AbstractFactoryMain.java
File metadata and controls
233 lines (204 loc) · 6.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
package AbstractFactory;
import java.util.Scanner;
public class AbstractFactoryMain {
public static void main(String[] args) {
Factory passengerFactory = new AbstractFactory().createFactory("Passenger");
Factory vehicleFactory = new AbstractFactory().createFactory("Vehicle");
Factory driverFactory = new AbstractFactory().createFactory("Driver");
Passenger taxiPassenger = passengerFactory.createPassenger("TaxiPassenger");
Passenger busPassenger = passengerFactory.createPassenger("BusPassenger");
Driver taxiDriver = driverFactory.createDriver("TaxiDriver");
Driver busDriver = driverFactory.createDriver("BusDriver");
Vehicle bus = vehicleFactory.createVehicle("Bus");
Vehicle taxi = vehicleFactory.createVehicle("Taxi");
bus.driver_in();
bus.passenger_in();
bus.go_to_race();
taxi.passenger_in();
taxi.go_to_race();
}
}
interface Passenger {
void initialisation();
}
class TaxiPassenger implements Passenger {
public void initialisation() {}
}
class BusPassenger implements Passenger {
public void initialisation() {}
}
class PassengerFactory implements Factory {
public Passenger createPassenger(String typeOfPassenger) {
switch (typeOfPassenger) {
case "TaxiPassenger" : return new TaxiPassenger();
case "BusPassenger" : return new BusPassenger();
default: return null;
}
}
@Override
public Vehicle createVehicle(String typeOfVehicle) {
return null;
}
@Override
public Driver createDriver(String typeOfDriver) {
return null;
}
}
interface Vehicle {
void initialisation();
void driver_in();
void passenger_in();
void go_to_race();
}
class Taxi implements Vehicle {
int min_number_of_passenger = 0;
int max_number_of_passenger = 4;
boolean driver = false;
boolean passenger = false;
@Override
public void initialisation() {
}
@Override
public void driver_in() {
if (driver == false)
{
driver = true;
System.out.println("Водитель сел в такси");
}
else {
System.out.println("Водитель уже в такси");
}
}
@Override
public void passenger_in() {
int passenger_in_taxi = 0;
if (passenger_in_taxi <= max_number_of_passenger) {
System.out.println("Количество людей, садящихся в такси: ");
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
passenger_in_taxi = passenger_in_taxi + number;
if (passenger_in_taxi > min_number_of_passenger && passenger_in_taxi <= max_number_of_passenger) {
passenger = true;
}
}
}
@Override
public void go_to_race() {
if (driver && passenger) {
System.out.println("Такси поехало");
}
if (driver==false && passenger) {
System.out.println("Без водителя такси не поедет");
}
if (driver && passenger==false){
System.out.println("Без нужного количества пассажиров такси не поедет");
}
}
}
class Bus implements Vehicle {
int min_number_of_passenger = 0;
int max_number_of_passenger = 30;
boolean driver = false;
boolean passenger = false;
@Override
public void initialisation() {
}
@Override
public void driver_in() {
if (driver == false)
{
driver = true;
System.out.println("Водитель сел в автобус");
}
else {
System.out.println("Водитель уже в автобусе");
}
}
@Override
public void passenger_in() {
int passenger_in_bus = 0;
if (passenger_in_bus <= max_number_of_passenger) {
System.out.println("Количество людей, садящихся в автобус: ");
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
passenger_in_bus = passenger_in_bus + number;
if (passenger_in_bus > min_number_of_passenger && passenger_in_bus <= max_number_of_passenger) {
passenger = true;
}
}
}
@Override
public void go_to_race() {
if (driver && passenger) {
System.out.println("Автобус поехал");
}
if (driver==false && passenger) {
System.out.println("Без водителя автобус не поедет");
}
if (driver && passenger==false) {
System.out.println("Без нужного количества пассажиров автобус не поедет");
}
}
}
class VehicleFactory implements Factory {
public Vehicle createVehicle(String typeOfVehicle) {
switch (typeOfVehicle) {
case "Taxi" : return new Taxi();
case "Bus" : return new Bus();
default: return null;
}
}
@Override
public Driver createDriver(String typeOfDriver) {
return null;
}
@Override
public Passenger createPassenger(String typeOfPassenger) {
return null;
}
}
interface Driver {
void initialisation();
}
class TaxiDriver implements Driver {
public void initialisation() {
String car_license = "Taxi";
}
}
class BusDriver implements Driver {
public void initialisation() {
String car_license = "Bus";
}
}
class DriverFactory implements Factory {
public Driver createDriver(String typeOfDriver) {
switch (typeOfDriver) {
case "TaxiDriver" : return new TaxiDriver();
case "BusDriver" : return new BusDriver();
default: return null;
}
}
@Override
public Passenger createPassenger(String typeOfPassenger) {
return null;
}
@Override
public Vehicle createVehicle(String typeOfVehicle) {
return null;
}
}
interface Factory {
Passenger createPassenger(String typeOfPassenger);
Vehicle createVehicle(String typeOfVehicle);
Driver createDriver(String typeOfDriver);
}
class AbstractFactory { //фабрика фабрик
Factory createFactory(String typeOfFactory){
switch (typeOfFactory) {
case "Passenger" : return new PassengerFactory();
case "Vehicle" : return new VehicleFactory();
case "Driver" : return new DriverFactory();
default : return null;
}
}
}