Hey there,
I have taken Software Design & Architecture course where I have read all these good programming practices and design rules like Singleton, Factory, etc along with rules like Open Closed Principle, SRP, etc. I can do this assignment for you, lets connect.
Regards,
Junaid Khalid