INTRODUCTION
In this article, we will learn the object-oriented design principles that can be applied in our daily design work. It is important to learn the basics of object-oriented programming, such as abstraction, encapsulation, polymorphism, and inheritance. But, at the same time, it is equally important to know the principles of object-oriented design, to create a clean and modular design. These guidelines help design a strong software design oriented to objects.
First, we will list the important principles of object-oriented design, and we will discuss each guideline in greater detail.
Encapsulate What Varies
• If you know that your code will change in the future, separate.
• The benefit of this OOP design is that it is easy to test and maintain the proper encapsulated code.
• Only one thing is constant in the field of software and that is change. Therefore, encapsulate the code that you expect or suspect of changing in the future.
• If you are coding in Java, follow the principle of making the variable and private methods by default and increasing access, for example, from private to protected and not public. Several of the design patterns in Java use encapsulation. The factory design pattern is an example of encapsulation that encapsulates an object creation code and provides flexibility to introduce a new product later regardless of existing code.
Code to an Interface Rather Than to an Implementation
• Always schedule for an interface and not for the implementation. This will lead to a flexible code that can work with any new implementation of an interface.
• Use the type of interface in variables, method return types or method argument type in Java. This has been recommended by many Java programmers, including books like Java effects and the first style design pattern.
Delegation Principle
Do not do all things alone, delegate to your class. A good example of the delegation design principle is the equals () method and hashCode () in Java.
• To compare two objects for equality, we ask that the class itself make a comparison instead of the Client class doing that verification. The benefit of this design principle is not the duplication of the code and it is very easy to modify the behavior.
Open-Closed Principle (OCP)
Classes must be open for the extension but closed for modification.
• Classes, methods or functions must be open to the extension (new functionality) and closed for modification.
• The benefit of this object-oriented design principle is to prevent programmers from changing the already tried and tested code.
Dry —Don't Repeat Yourself
• Avoid duplicate code by abstracting common things and placing them in a single location.
• Use an abstract class to abstract common things in one place. If you have a block of code in more than two locations, consider converting it to a stand-alone method or use a coded value more than once, with public static end constants.
• The benefit of this object-oriented design principle is in maintenance.
Single Responsibility Principle (SRP)
• All the objects in our web application must have a single responsibility, and all the services of the object must be focused on loading this single responsibility (SRP).
• If you put more than one functionality in a class in Java, introduce the coupling between two characteristics and, although it changes functionality, there is a possibility that it has broken the coupled functionality, which requires another round of testing to avoid any surprise. production environment.
Liskov's Substitution Principle (LSP)
• A subclass must be adequate for its base classes.
• According to the Liskov substitution principle, the subtypes must be replaceable by supertype, that is, methods or functions, which use a type of superclass to be able to work with the object of a subclass without any problem.
• PSL is intimately related to the principle of single responsibility and the principle of interface segregation. If a class has more functionality than a subclass, it may not support some of the features and violate the LSP.
Interface Segregation Principle (ISP)
• Statistics of the Principle of Interface Segregation that, a client should not implement an interface if he does not use it.
This occurs mainly when an interface contains more than one functionality, and the client only needs one functionality and not the other. The design of the interface is complicated, because after releasing its interface, you will not be able to change it without breaking the entire implementation.
• Another benefit of this design principle in Java is that an interface has the disadvantage of implementing the entire method before any class can use it, so having a single functionality means less method to implement.
Dependency Injection or Inversion Principle
• Do not ask for a dependency - a structure will be provided. This was very well implemented in the framework of Spring. The beauty of this design principle is that any class that is injected by the DI structure is easy to test with the mock object and easier to maintain because the object creation code focuses on the structure and the client code is not full of it.
• There are several ways to implement a dependency injection, such as the use of bytecode instrumentation, which some AOP (Aspect Oriented Programming) frameworks, like AspectJ, do, or use proxies, as well as those used in the Spring. See this example of the IOC and the DI design standard to learn more about this SOLID design principle
To getting expert-level training for Java Training in your location – java training in chennai | java training in bangalore | java training in pune | java training in chennai | java training in bangalore | java training in tambaram | java training in omr | java training in velachery | java training in annanagar | java training in chennai | java interview questions and answers | core java interview questions and answers | java training in marathahalli | java training in btm layout | java training in jayanagar | java training in chennai | java training in usa | For getting java online training | java online training
http://chennaitraining.in/sql-server-dba-training-in-chennai/
ReplyDeletehttp://chennaitraining.in/teradata-training-in-chennai/
http://chennaitraining.in/sap-hr-training-in-chennai/
http://chennaitraining.in/sap-fico-training-in-chennai/
http://chennaitraining.in/sap-abap-training-in-chennai/
That was great to read. It was interesting to read. keep up with your writing skills.
ReplyDeletealso, check Java training in Pune