Refactoring to SOLID Java
This course will teach you how to practically apply SOLID principles in Java applications to avoid technical debt and build robust, loosely coupled systems that can evolve easily over time.
What you'll learn
In this course, Refactoring to SOLID Java, you’ll learn to refactor applications by applying SOLID object-oriented principles to make them more robust and easy to maintain. First, you’ll explore the Single Responsibility Principle and why this is probably the most crucial concept in programming. Next, you’ll discover the Open Closed principle and learn how to evolve applications without altering existing code. After that, you'll explore the Liskov Substitution Principle and discover how to create correct relationships using inheritance. Then, you'll see why it’s not a good idea to create “fat” interfaces and change that using the Interface Segregation Principle. Finally, you’ll learn how to create loosely coupled components by applying the Dependency Inversion Principle. When you finish this course, you’ll have the skills and knowledge to refactor legacy JAVA projects into systems that respect the SOLID and are easy to understand, evolve, and maintain.
Table of contents
- Code Rigidity, Code Fragility, and Technical Debt 8m
- Course Overview 2m
- Single Responsibility Principle 3m
- Identifying Multiple Reasons to Change 9m
- Refactoring for SRP 1m
- Demo: Refactoring a Method with Too Many Responsibilities 7m
- Demo 01 - Single Responsibility Principle 0m
- Recap 2m
- Checkpoint 01 - Single Responsibility Principle 0m
- Exercise 01 - Single Responsibility Principle 0m
- Open-closed Principle 3m
- Demo: Adding a New Software Feature without Using the OCP 3m
- Open-closed Principle Implementation Strategies 6m
- Demo: Applying the OCP When Adding New Software Features 4m
- Demo 02 - Open-closed Principle 0m
- Applying the OCP for Frameworks and APIs 2m
- Recap 1m
- Checkpoint 02 - Open-closed Principle 0m
- Exercise 02 - Open-closed Principle 0m
- Liskov Substitution Principle 3m
- Violating the Liskov Substitution Principle 6m
- Demo: Incorrect Inheritance between Classes 4m
- Demo 03 - Liskov Substitution Principle 0m
- Refactoring Code to Respect the LSP 4m
- Demo: Refactoring Classes for LSP 3m
- Recap 2m
- Checkpoint 03 - Liskov Substitution Principle 0m
- Exercise 03 - Liskov Substitution Principle 0m
- Interface Segregation Principle 2m
- Identifying "Fat" Interfaces 4m
- Demo: Problems That Appear When Interfaces Are "Fat" 3m
- Refactoring Code That Depends on Large Interfaces 4m
- Demo: Refactoring Code to ISP 3m
- Demo 04 - Interface Segregation Principle 0m
- Recap 2m
- Checkpoint 04 - Interface Segregation Principle 0m
- Exercise 04 - Interface Segregation Principle 0m
- Dependency Inversion Principle 5m
- Demo: High-level Components Depend on Low-level Components 3m
- Writing Code That Respects the Dependency Inversion Principle 3m
- Dependency Injection (DI) 3m
- Inversion of Control (IoC) 3m
- Demo: Refactoring Code to Meet the Dependency Inversion Principle 3m
- Demo 05 - Dependency Inversion Principle 0m
- Recap and Course Summary 3m
- Checkpoint 01 - Dependency Inversion Principle 0m
- Exercise 1 - Dependency Inversion Principle 0m