Software Design Course: SOLID, Design patterns, Code Smells

Learn the techniques to make your code great! Learn Object Oriented programming best pracitices, SOLID, Design and more!

3.80 (53 reviews)


7.5 hours


Aug 2020

Last Update
Regular Price

What you will learn

SOLID principles

Most commonly used design patterns

Common code smells


Domain driven design


Welcome to the Software Design Course: SOLID, Design patterns, Code smells course.

Covering all of the fundamental concepts of software design. This course is bound to help you improve your coding skills and be on the same level as some more experienced developers.

I built this course thinking specifically about junior developers or people without a lot of experience in software engineering. I wanted to cover all of the topics that you need to know to be on your way to mid level developer.

This course contains:

Information about the fundamental object-oriented programming pillars

    - Encapsulation

    - Inheritance

    - Polymorphism

We cover the SOLID software design principles

    - Single Responsibility Principle

    - Open/Closed Principle

    - Liskov Substitution Principle

    - Interface Segregation Principle

    - Dependency Inversion Principle

You will also be learning a lot about design patterns! You will learn:

    - The Builder Pattern

    - The Decorator Pattern

    - The Strategy Pattern

    - The Template Method Pattern

    - The Singleton Pattern

    - The Observer pattern

At the final section of the course we will talk about code smells and how to refactor them:

    - Variable/Method/Class naming

    - Lazy Class

    - God Class

    - Cyclomatic Complexity

and many others.

What are you waiting for? Enroll in this course and I will see you inside where we will start building your software design skills!


Background music by BenSound


Software Design Course: SOLID, Design patterns, Code Smells
Software Design Course: SOLID, Design patterns, Code Smells
Software Design Course: SOLID, Design patterns, Code Smells
Software Design Course: SOLID, Design patterns, Code Smells


Object Oriented Programming principles

Encapsulation Theory

Encapsulation Example

Inheritance Theory

Inheritance Example

Polymorphism Theory

Polymorphism Example

OOP Practice Questions

OOP Practice Questions - Text

OOP Practice Questions - Answers

SOLID Principles

SOLID Introduction

Single Responsibility Principle - Theory

Single Responsibility Principle - Example

Open Closed Principle - Theory

Open Closed Principle - Example

Open Closed Principle - Example Part 2

Liskov Substitution Principle - Theory

Liskov Substitution Principle - Example

Interface Segregation Principle - Theory

Interface Segregation Principle - Example

Dependency Inversion Principle - Theory

Dependency Inversion Principle - Example

SOLID Exercise 1 - Overview

SOLID Exercise 1 - Answers

SOLID Exercise 2 - Overview

SOLID Exercise 2 - Answers

Design Patterns

Introduction To Design Patterns

Builder Pattern - Theory

Builder Pattern - Example

Builder Pattern Exercise Overview

Builder Pattern Exercise Answer

Decorator Pattern - Theory

Decorator Pattern - Example

Decorator Pattern Exercise Overview

Decorator Pattern Exercise Answer

Strategy Pattern - Theory

Strategy Pattern - Example

Template Method - Theory

Template Method - Example

Adapter Pattern - Theory

Adapter Pattern - Example

Facade Pattern - Theory

Facade Pattern - Example

Observer Pattern - Theory

Observer Pattern - Example

Singleton Pattern - Theory

Singleton Pattern - Example

Factory Method Pattern - Theory

Factory Method Pattern - Example

Abstract Factory Pattern - Theory

Abstract Factory Pattern - Example

Code Smells

Code Duplication

Code Duplication - Example

God Class

Long Method

Lazy Class

Too Many Parameters

High Cyclomatic Complexity

High Cyclomatic Complexity Refactoring Example

Bad Naming

Feature Envy

Feature Envy Example


Stefan23 April 2021

The course is a super basic introduction to everything but not much else. It barely scratches the surface of SOLID principles and DDD, would not recommend it except for absolute beginners.

Thomas9 April 2020

I am a beginner in OOP and this course has learned me a lot about what good coding is, and the principles used to achieve that. I am quite sure that the code I write will be improved by the knowledge learned in this course.

Wakibi7 January 2020

The deeper I am the going, the more interesting it's getting. Especially the examples, quite helpful to give the student scenarios where each pattern could be applied


Udemy ID


Course created date


Course Indexed date
Course Submitted by