Course Highlights

  • Java Design Principles

    Get a clear understanding of the most essential design principles for structuring your classes towards building loosely-coupled software.

  • Mastering Design Patterns

    Learn when, why and how to use design patterns. Through a unique pattern classification, you'll get a better understanding of implementing Design Patterns.

  • Building Reliable Software

    Learn best practices & design rules specific to implementing Java exceptions.

Course Objective & Overview

This course will help you master the essential Design Principles & Design Patterns needed for building well-designed softwareThese principles & patterns are extremely important when building any largecomplex software. They ensure that the software is easy to understand & maintain. You will clearly understand the purpose behind the need for such principles & patterns, i.e., the critical problems that they solve. For instance, you will clearly understand the many different ways in which Class Invariants can be compromised and the measures that we need to take to ensure they are not violated.

The course starts off by first discussing the core Java Design Principles that are based on the basic Java language features like access modifiers. The design principles help us understand how to structure our classes and packages so that we can build well-designed systems that are loosely-coupled. Such loosely-coupled systems have minimal inter-dependencies among objects or modules. Such a loosely-coupled system ensures that the following goals of Software Design are met:

  • Works correctly
  • Easy to understand
  • Easy to maintain
  • Secure
  • Extensible


While the above design principles are absolute essentials when building any well-designed software, to address certain complex problems we would have to build on those design principles and employ time-tested Design Patterns. Design Patterns make it easy to incorporate any changes (ease of maintenance) and also clearly convey to other developers on how the components have been implemented. So, we next learn several important design patterns split across multiple sections. Each section is based on a more generic design principle and emphasizing a common theme among the different design patterns in that section although their intent is different. This unique classification helps you have a more solid conceptual understanding of the different design patterns and their underlying structure. 

Course curriculum

    1. Course Introduction - Design Principles, Design Rules, and Design Patterns

    1. Problem: Tightly Coupled System

    2. Solution: Use Accessors for Public Fields

    3. Design Rules for Types

    4. Design Rules for Class Members

    1. Problem: Mutable Components & Class Invariant

    2. Solution: Protecting Mutable Components

    3. Creating Immutable Classes

    4. Prefer Static Factory Methods

    1. Problem: Beware of Inheritance

    2. Refer Objects via Interfaces ~ Prerequisite

    3. Solution: Use Composition

    1. Design & Document for Inheritance

    1. Design Patterns: Motivation & Agenda

About this course

  • ₹5,000.00
  • 48 lessons
  • Hybrid course with live & recorded lectures
The instructor explained all the concepts with examples, which if you follow religiously would with one revision in the end would be etched in your mind forever. Quick response. Enjoyed the class.
Sri Sushma K.
MEET YOUR INSTRUCTOR

Dheeru Mundluru is the instructor for this program. A passionate software engineer & educator, Dheeru has around 15 years of experience developing innovative software for start-ups in Silicon Valley and elsewhere. He holds a Ph.D. in Computer Science from University of Louisiana at Lafayette (USA). He is an experienced online instructor with over half-a-dozen years of teaching experience with over 100k students globally. He has also been rated as one of the top instructors on Udemy. His engineering expertise includes developing complex Web data integration & mining software with Java as the main programming tool. Coming from start-up world, he also has extensive end-to-end experience in developing Web applications using technologies such as Spring, Hibernate, MySQL, and Solr.

Writing well-crafted code that follows the best design practices is of utmost importance to him. He brings the same level of passion and completeness to his teaching.

What our students are saying

Renato T.

It's a very good course. I highly recommend it.
Frequently Asked Questions
Good understanding of Core Java is needed. If you are completely new to Java, you can check out our comprehensive Java In-Depth course or the Core Java course.
As of today, the course follows a hybrid model. Some of the lectures are recorded while others are live lectures. Over time, we expect this course to include mostly recorded lectures, which will be accessible for lifetime.
No. We recommend taking notes as you progress through the lectures. However, all programs demonstrated in the course are downloadable.
Yes. This is an advanced course and even many experienced Software Engineers do not have a clear understanding of Design Patterns & Principles. As explained in course overview, the Design Principles & Design Patterns discussed in this course are critical when building large, complex software.
No. To ensure course is right fit, please review the preview videos, course description and curriculum carefully.

Discover your potential, starting today