The before code mixes floor requests as integers inside the Elevator class, making it hard to extend. The after code separates Request and Floor into their own classes, so Elevator handles only movement and request management, improving clarity and extensibility.
### Before: Monolithic Elevator Class (no separation)
class Elevator:
def __init__(self):
self.current_floor = 0
self.requests = []
def request_floor(self, floor):
self.requests.append(floor)
def move(self):
while self.requests:
next_floor = self.requests.pop(0)
print(f"Moving from {self.current_floor} to {next_floor}")
self.current_floor = next_floor
### After: Separate Elevator, Floor, Request Classes
class Request:
def __init__(self, floor_number):
self.floor_number = floor_number
class Floor:
def __init__(self, number):
self.number = number
class Elevator:
def __init__(self):
self.current_floor = 0
self.requests = []
def add_request(self, request):
self.requests.append(request)
def move(self):
while self.requests:
request = self.requests.pop(0)
print(f"Moving from {self.current_floor} to {request.floor_number}")
self.current_floor = request.floor_number