Skip to content

This repository aims to provide a comprehensive resource for understanding and applying the SOLID principles in software development.

Notifications You must be signed in to change notification settings

AmirTghizde/SOLID

Repository files navigation


Github Created At

Solid principles

The SOLID principles are a set of object-oriented design principles that have revolutionized the world of software development. Coined by Robert C. Martin, also known as Uncle Bob, these principles provide a framework for writing modular, maintainable, and robust software. By adhering to these principles, developers can create systems that are easier to understand, debug, and extend.

The term SOLID is an acronym that represents the following principles:

  • Single Responsibility Principle (SRP): Each class or module should have only one reason to change, focusing on a single responsibility. This promotes high cohesion and reduces the risk of unintended side effects when modifying code.

  • 🔒🔓Open-Closed Principle (OCP): Software entities (classes, modules, functions) should be open for extension but closed for modification. This principle encourages the use of abstraction and interfaces, enabling new features to be added without modifying existing code.

  • 👥Liskov Substitution Principle (LSP): Subtypes must be substitutable for their base types without affecting the correctness of the program. This principle ensures that inheritance hierarchies are well-designed and that derived classes can be used interchangeably with their base classes.

  • 👨👩Interface Segregation Principle (ISP): Clients should not be forced to depend on interfaces they do not use. This principle promotes the creation of small, cohesive interfaces tailored to specific client requirements, preventing unnecessary dependencies.

  • 🤝Dependency Inversion Principle (DIP): High-level modules should not depend on low-level modules; both should depend on abstractions. This principle encourages the use of dependency inversion, where the dependencies between modules are inverted, making the system more flexible and decoupled.

Note

Don't forget to drop a star it took me a lot to write this stuff 😵