Saturday, November 13, 2021

Software Craftsmanship 1 - SOLID Design Principles - Focusing on JAVA

Rule No 1. Single Responsibility Principle 

A Java class should not be changed other than the main objective. 

Ex: Assume, AccountOperation.java is for credit , debit , balance check, transfers and payments related activities. Sending notifications, Validations, HTTPS authentication, formatting should not include in this class. They should be included in separate individual Java classes. 




Rule No 2 : Open Close Principle 

Always Ensure Rule No 1.

Open Principle

Software modules must be open for extension without breaking existing functionality. So this ensures existing implementations, system integrations as it is. Additional feature development need to be done by extending the base class. This feature can be achieved by implementing interfaces. Interface should be base lined / finalized with major functionalities. 


Close Principle 

Once implementation done, modules should be close for further changes. This ensures integrated systems will function as it is. This feature can be achieved by implementing interfaces as new method cannot be added to the interface without changing implemented classes.



Rule No 3.  Liskov Substitute Principle

Always Ensure Rule No 2.

Subclass objects should behave same as base class objects without breaking the application.

Rule No 4. Dependency Inversion Principle

Always Ensure Rule No 1.

Classes must depend on abstractions not implementations. Dependencies in classes must be based on interface level. So it will have no impact on logic changes in dependencies.