mercredi 13 juin 2018

Extending an already written class using OOPS

I am trying to learn Design practices and OOPs. I am using parking lot problem as sample to start.

I have a GeneralParkingLot interface and a Vehicle interface. GeneralParkingLot has only one function returnParkingLotSize, Vehicle interface has multiple Vehicle attributes.

I have created a class DowntownParkingLot which extends GeneralParkingLot and has other attributes like listOfCars, availableSlots etc. and a Car Class which extends Vehicle class.

I have a HandlerClass which handles incoming command and inside that class I have decalared a DownTownParkingLot object and multiple functions to handle commands, so in each function I just pass the object of DowntownParkingLot and operate on it.

I have created different services like CreateParkingLotObject, ParkACar, FreeASlot etc. which are called by the command handler.

I have also created unit Tests to test my application.

My problem is if I want to extend my current parking lot to have additional functionality like lets say multiple floor attribute or If I want to now handle multiple parking lots instead of one, so what would be the best way to extend my GeneralParkingLot class or DowntownParkingLot class. I have also read about adapter and decorator patterns, but I think those are useful when I am already following a particular design pattern from start, In my case I didnt follow any particular pattern, so what would be the best way to extend my code. I am asking this because sometimes we encounter a class which is not made according to any design pattern and is being used in multiple places (like a lot of API's etc), so what is the best way to extend such a code. Is refactoring from start the only option? or creating new classes which inherit from old classes? What would be the best way? Also I would like to use the already created unit tests as much as possible and not rewrite same test cases again.

Aucun commentaire:

Enregistrer un commentaire