SOLID Design Principles
※ source Single Responsibility Principle Open/Closed Principle: Open for extension, but closed for modification. Liskov Substitution Principle: This is the foundation where interface and inheritance can work. Interface Segregation Principle Dependency Inversion Principle