We may earn an affiliate commission when you visit our partners.
Course image
Stijn De Mulder

  Boost your Java programming skills by taking this content-rich and hands on fully featured training course to learn design patternsThis course is beiing updated with coding exercises and new content. Design patterns are reusable pieces of code patterns that solve common problems in Java applications. In this course you will learn how to identify and implement design pattern in Java. You will learn how to apply these patterns to solve common design issues and learn to write flexible and maintainable code.

Read more

  Boost your Java programming skills by taking this content-rich and hands on fully featured training course to learn design patternsThis course is beiing updated with coding exercises and new content. Design patterns are reusable pieces of code patterns that solve common problems in Java applications. In this course you will learn how to identify and implement design pattern in Java. You will learn how to apply these patterns to solve common design issues and learn to write flexible and maintainable code.

This course will give you insight in the more than 20+ design patterns from the book "Design Patterns: Elements of Reusable Object-Oriented Software", by Gamma, Helm, Johnson and Vlissides, which is considered the reference on the subject.

For each pattern a clear example is given to understand the problem the pattern will solve, as well as its advantages and disadvantages. You will be able to practically understand how the pattern works with the detailed included Java lessons. 

At the end of this course, you will be able to 

  • Identify common problems in your code

  • Apply the correct design pattern

  • Talk with colleagues using a common vocabulary (and be a hero)

  • Implement a better object oriented solution that is a lot more maintainable and readable

  - All of the video lectures are download-enabled.         If you have a slow internet connection, or want to take this course with you on your laptop, smartphone or other portable device, sign up and download all the videos and other course materials now. 

  Sign up now to get lifetime access to this course. With Udemy's 30-day money-back guarantee, it's risk-free. 

Enroll now

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Learning objectives

  • Write better programs
  • Identify design problems
  • Learn the industry standard common vocabulary

Syllabus

Introduction

What are design patterns and why should you care? In this introduction i'll give you an overview off all the things you need to know before starting this course.

Read more
Source code
Patterns Overview
Case Study: Building a 3D editor

In the case study we'll look at a real life scenario where we can apply several design patterns.

To build our 3D editor, we must define a correct document or data structure. In this practical Java session we'll go through the different options of defining that structure and how we can implementing it.

Let's look at the way we can render our images in the 3D editor, which are the main problems we must solve and how we can practically solve them using a strategy pattern. In this hands on session we will practically build our mini rendering program.

How can we efficiently capture user action in the 3D editor? In this session we'll create a system that implements the command pattern to capture user actions.

We face an issue when we want to deploy our 3D editor on multiple operating systems. In this session we'll implement a system that reduces the complexity of the extra platforms by using the Bridge pattern.

Creational Design Patterns

In this lecture we'll discuss the focus points of the creational patterns and walk through the five patterns which are described in the "Gang of four: Elements of re-usable design" book.

In this lecture we'll describe the problem of a complex system that can benefit from the singleton pattern. We'll explain the theory behind the singleton pattern: when can we use it, what does it solve and the different options of implementing it.

How can you abstract a complex system? In this lecture we'll practically handle the case of a billing system and improve the overall design by using the singleton pattern.

Image you have an application which connects to three different databases. How can you avoid duplicating code when you want to query all three of them?

In this Java session we'll program the example given in the builder pattern theory. We'll create a fictional program that connects to three different databases. After this session the practical implication of the builder pattern will be clear.

In this lecture we'll discuss how the the factory method can delegate the object creation to other classes. We'll see how this pattern can improve our design when creating a re-usable framework.

With this hands on session we'll create a framework that relies on the factory method for object creation.

In the Abstract Factory lecture, a case is brought to support an application with multiple themes. By this illustration it'll be clear when you can use it and how it can improve the overall design.

How can we support an application that support multiple themes? In this lecture we'll build this framework in Java, illustrate some problems and fix it with the abstract factory pattern.

The prototype pattern creates objects by cloning others. What this exactly means will be explained in this lecture.

Prototype pattern using Java

This quiz presents a number of design problems and to goal is to choose which creational pattern will solve them.

Structural Design Patterns

In this lecture we'll discuss the focus points of the structural patterns and walk through the seven patterns which are described in the "Gang of four: Elements of re-usable design" book.

With the façade pattern we'll see how a complex system can be abstracted by using a façade. A complex financial system is given as an illustration to comprehend how the façade pattern can enlighten the overall design.

This session shows how easy it can be to use a façade pattern to hide a complex system. We will program a fictional financial system and use the façade pattern to abstract it.

Ever wanted to use a class from another framework, but were faced with incompatible interfaces? In this lecture we'll discuss this problem and how the adapter pattern provides an elegant solution.

In this practical session we'll do a little geometry. We'll program a rectangle adapter to be able to adapt from the old to the new geometry classes.

The decorator pattern works great when building user interface design. In this lecture we'll discuss an example when the decorator pattern really pays off. We'll also consider when to use this pattern and the main pros and cons.

In the hands on session of the decorator patten, we'll build a small GUI framework and improving it's design by using this pattern.

This lecture handles the bridge pattern. We'll discuss how the bridge pattern can improve the overall design based on loose coupling an interface from its implementation.

Bridge pattern using Java

Sometimes it's necessary for a client to uniformly treat tree objects. This lectures covers how the composite pattern helps to solve this issue.

In this session we'll effectively build a tree based on graphic objects. We apply the composite pattern so clients can simplify their code.

In this lecture we'll discuss the case where we want to dynamically load images of an application. We go through the various points where the proxy pattern comes in handy.

It's time to dynamically load images. This hands on session covers how the proxy pattern can be used to remain the overall code by adding dynamic behaviour to the application.

Ever having an issue where your application is slow because it uses too much memory for thousand of objects? The flyweight pattern allows you to reuse these objects and gain a drastic performance improvement.

In this hands on session, we'll build a small word process to illustrate how the flyweight pattern really improves the overall memory performance of an application.

Behavioral Design Patterns

In this lecture we'll discuss the focus points of the behavioral patterns and walk through the eleven patterns which are described in the "Gang of four: Elements of re-usable design" book.

This lecture illustrates how the command pattern really captures user or system actions. When should we apply this pattern and what are the pros and cons, it can all be found in this session.

Command pattern using Java

By using the strategy pattern we can encapsulate an algorithm in an object. We'll discuss a sample chess application that that benefits from applying the strategy pattern.

It's time to implement the strategy pattern in a fictional chess application.

Visitor pattern
Visitor pattern using Java
Observer pattern
Observer pattern using Java
Memento pattern
Memento pattern using Java
Mediator pattern
Mediator pattern using Java
Chain of responsibility pattern
Chain of responsibility pattern using Java
State pattern
State pattern using Java
Template method pattern
Template method pattern using Java
Additional Patterns

In this chapter we're going to discuss the inversion of control pattern. We'll start with a problem statement and move our way to the patten details.

Inversion Of control pattern using Java

What is a Transfer object? When is it interesting to use one? Learn all about it in this chapter.

Data transfer object using Java
Structurally improve the architecture of existing or new applications.

This lecture gives an overview of all the patterns in the Architectural Patterns section.

Command Query Responsibility Pattern

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops design skills, which are core for all developers
Taught by Stijn De Mulder, recognized for their work in design patterns
Teaches key concepts in design patterns, which are used throughout software development
Examines multiple design patterns, which provides a comprehensive understanding of their usage
Explores design patterns, which is standard in software development
May require prior knowledge of object-oriented programming

Save this course

Save Experience Design Patterns In Java to your list so you can find it easily later:
Save

Reviews summary

Lacks complex examples and support

According to students, this Java course Experience Design Patterns In Java provides examples that are too simple and provide little benefit. They also state that some sections are missing and it is difficult to get answers to questions.
Some sections of the course are missing, making it difficult to follow along.
"Some sections mentioned in introduction part are missing."
This course lacks support from instructors and TAs, making it difficult to get help with questions or missing content.
"Getting an answer to your question is not likely"
Examples in this course are not complex enough to demonstrate the benefits of design patterns.
"Examples are mostly too simple and inelaborate, you cannot even understand the benefit of using that pattern."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Experience Design Patterns In Java with these activities:
Read "Design Patterns: Elements of Reusable Object-Oriented Software"
Gain a deeper understanding of design patterns by reading the classic reference book on the subject.
Show steps
  • Purchase or borrow the book.
  • Read the book thoroughly, taking notes and highlighting key concepts.
  • Discuss the book with classmates or colleagues.
Follow online tutorials
Supplement your learning by following online tutorials on design patterns and Java programming.
Browse courses on Java
Show steps
  • Find reputable online tutorials.
  • Follow the tutorials and complete the exercises.
  • Apply what you learn to your own coding projects.
Practice coding
Practice coding design patterns in Java to reinforce your understanding and improve your proficiency.
Browse courses on Java
Show steps
  • Choose a design pattern to practice.
  • Implement the design pattern in a Java program.
  • Test your program to ensure it works as expected.
Three other activities
Expand to see all activities and additional details
Show all six activities
Join a study group
Collaborate with peers to discuss design patterns, share knowledge, and reinforce your understanding.
Browse courses on Java
Show steps
  • Find or start a study group.
  • Meet regularly to discuss course material and design patterns.
  • Work together on coding projects.
Attend a design patterns workshop
Enhance your understanding and practical skills by attending a design patterns workshop.
Browse courses on Java
Show steps
  • Find a reputable design patterns workshop.
  • Register for the workshop.
  • Attend the workshop and actively participate.
  • Apply what you learn to your own coding projects.
Participate in coding competitions
Challenge yourself by applying design patterns in coding competitions and gain valuable feedback.
Browse courses on Java
Show steps
  • Find coding competitions that focus on design patterns.
  • Practice and prepare by solving coding problems.
  • Participate in the competitions and learn from your solutions and mistakes.

Career center

Learners who complete Experience Design Patterns In Java will develop knowledge and skills that may be useful to these careers:
Software Engineer
Software Engineers design, develop, and maintain software applications. This course can help you develop the skills and knowledge you need to become a successful Software Engineer by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can avoid reinventing the wheel and create software systems that are more efficient, maintainable, and extensible.
Software Architect
Software Architects design and build the overall structure of software systems, ensuring that they are efficient, reliable, and scalable. This course can help you develop the skills and knowledge you need to become a successful Software Architect by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can avoid reinventing the wheel and create software systems that are more efficient, maintainable, and extensible.
Technical Lead
Technical Leads are responsible for overseeing the technical aspects of software development projects. This course can help you develop the skills and knowledge you need to become a successful Technical Lead by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can help ensure that software development projects are completed on time, within budget, and to the highest quality standards.
Software Development Manager
Software Development Managers are responsible for managing software development teams and projects. This course can help you develop the skills and knowledge you need to become a successful Software Development Manager by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can help ensure that software development teams are working efficiently and effectively to deliver high-quality software products.
Product Manager
Product Managers are responsible for defining and managing the roadmap for software products. This course can help you develop the skills and knowledge you need to become a successful Product Manager by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can help ensure that software products are designed to meet the needs of users and are easy to use and maintain.
Enterprise Architect
Enterprise Architects design and oversee the architecture of large-scale IT systems. This course can help you develop the skills and knowledge you need to become a successful Enterprise Architect by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can help ensure that IT systems are efficient, reliable, and scalable.
Data Architect
Data Architects design and oversee the architecture of data systems. This course can help you develop the skills and knowledge you need to become a successful Data Architect by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can help ensure that data systems are efficient, reliable, and scalable.
IT Consultant
IT Consultants provide advice and guidance to organizations on how to use technology to achieve their business goals. This course can help you develop the skills and knowledge you need to become a successful IT Consultant by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can help ensure that the technology solutions you recommend are efficient, effective, and scalable.
UX Designer
UX Designers design the user experience of software products. This course can help you develop the skills and knowledge you need to become a successful UX Designer by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can help ensure that software products are easy to use and enjoyable for users.
UI Designer
UI Designers design the user interface of software products. This course can help you develop the skills and knowledge you need to become a successful UI Designer by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can help ensure that software products are visually appealing and easy to navigate.
Back-End Developer
Back-End Developers are responsible for designing and developing the back end of software products. This course can help you develop the skills and knowledge you need to become a successful Back-End Developer by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can help ensure that the back end of software products is efficient, reliable, and scalable.
Front-End Developer
Front-End Developers are responsible for designing and developing the front end of software products. This course can help you develop the skills and knowledge you need to become a successful Front-End Developer by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can help ensure that the front end of software products is efficient, responsive, and visually appealing.
Full-Stack Developer
Full-Stack Developers are responsible for designing and developing both the front end and back end of software products. This course can help you develop the skills and knowledge you need to become a successful Full-Stack Developer by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can help ensure that software products are efficient, reliable, and scalable, and that they provide a great user experience.
Database Administrator
Database Administrators are responsible for managing and maintaining databases. This course may be useful for you if you want to become a Database Administrator by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can help ensure that databases are efficient, reliable, and scalable.
Software Tester
Software Testers are responsible for testing software products to ensure that they are free of defects. This course may be useful for you if you want to become a Software Tester by teaching you about design patterns, which are reusable solutions to common software design problems. By learning about design patterns, you can help ensure that software products are well-tested and meet the needs of users.

Reading list

We've selected 12 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Experience Design Patterns In Java.
Is commonly used as a textbook at academic institutions or by industry professionals and is considered the reference on the subject of design patterns.
Provides practical advice on writing reusable Java code, and it covers many design patterns implicitly.
Provides guidelines on how to write clean and maintainable code.
Uses a lighthearted approach to explain design patterns, making it a good read for beginners or those who want a more accessible introduction to the topic.
Provides guidance on how to apply agile principles, patterns, and practices in C#.
Provides guidance on how to apply domain-driven design to complex software applications.

Share

Help others find this course page by sharing it with your friends and followers:
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser