Java Design Patterns and Architecture
4.1 (3,133 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
112,029 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Java Design Patterns and Architecture to your Wishlist.

Add to Wishlist

Java Design Patterns and Architecture

Discover how to use design patterns to structure and simplify your Java program on this FREE Java Tutorial for Beginners
4.1 (3,133 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
112,029 students enrolled
Created by John Purcell
Last updated 7/2013
English [Auto-generated]
Price: Free
  • 4.5 hours on-demand video
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Understand common design patterns in Java
  • Know when to apply common patterns
  • Be able to use design patterns to help structure your software
View Curriculum
  • Basic Java knowledge

Discover some of the most useful, important and common design patterns in Java; reusable code patterns that you can use to structure your program and perform common tasks. Includes lots of examples with full source code. "Design Patterns" has been the big buzz phrase in the Java community for some time now, and if you want to be able to write effective Java programs, work as a Java developer or pass exams in Java, you can't afford to miss out. Fortunately, this course is entirely free :)

Take this FREE Java Design Patterns and Java Architecture course right now and learn everything about java design patterns and java architecture.

Who is the target audience?
  • Software developers
  • Java students with an intermediate-level knowledge
  • Java beginners who like being dropped in at the deep end
Students Who Viewed This Course Also Viewed
Curriculum For This Course
19 Lectures
3 Lectures 29:05
An introduction to the course.

This is just some notes about software design; partly because I want to explain why I don't know much about formal design methodologies and so won't cover them in this course (even though we will talk a fair bit about software design), partly just to explain what little I do know about it, and partly because I need to get a few things off my chest ....
A Brief History of Software Design

We'd better start by looking at the most fundamental of design patterns -- so fundamental that it can be overlooked, but it's the pattern that every software developer has in his or her head, and works from as a starting point.
Front End / Back End
Structural Patterns
6 Lectures 01:32:38
In this tutorial we'll look at the theory behind MVC, before going on to implement an example
Model-View-Controller: The Theory

In this tutorial we'll set up a basic MVC framework, leaving out the "listener" stuff, which we'll come back to later on.
Model-View-Controller: In Practice

We need the observer pattern in order to complete our model view controller pattern. Even if you don't use MVC, the observer pattern is vital to user interface programming. It's one of the vital structural patterns that hold modern software together. It can also be quite tricky to understand initially, so for that reason we'll go through the theory of it before actually tackling it.

Observer Pattern: The Theory

Let's take a look at one of the easiest (inasmuch as this pattern can be called "easy") usages of the observer pattern; adding handlers to buttons in Swing. Don't worry if you don't know Swing; this code would look pretty much the same for a variety of situations involving timers and other uses of Observer.
Observer Pattern: An Example Involving Buttons

Let's take a look at an example implementation of the observer pattern. In this tutorial I'll make my "controller" listen to my "view" in my MVC implementation, but you could make any object listen to any other object. You just need some kind of a situation where the object being listened to can somehow signal that something has happened for some reason -- for example, a button can be clicked or a timer can trigger. Your other object can then "listen" to the first object.
Observer Pattern: Implementing From Scratch (with MVC)

I realised while making this course that it's a controversial issue, whether the model should talk to the view directly or not. Well, controversial among those who like controversy. Most software developers would say that you should decide this based on what you need to implement. The model should never use View classes; everyone agrees on that. Aside from basic stuff like that, things like this are just implementation details and not worth getting too hung up on.
An MVC Controversy
Smaller Scale Patterns
10 Lectures 02:25:56
The singleton pattern is controversial, but important to know since you'll encounter it even if you decide not to use it.
The Singleton Pattern

We'll need a "bean" to use as the "transfer object" in the DAO patterns. They're also useful for lots of other things, such as event objects and storing data in your program.

We'll start looking at the DAO pattern in this tutorial (there's a bit more to come!). DAO is a pattern for abstracting away databases and keeping all your SQL or LDAP code or whatever safely in particular files.

The DAO pattern is potentially multi-layered. Here we'll add one more layer, by creating a "factory" that can create our DAO objects.
DAO Factories

An introduction to JUnit. This seems like a good place to put a JUnit tutorial, because we really need to test the DAO class before proceeding further.
JUnit Basics: Testing the DAO

Let's extend the DAO pattern so that it can cope with multiple databases. We'll need to define interfaces that the existing stuff implements, and maybe even an abstract class for a final touch.
Extending DAO for Multiple Databases

Often applications don't save every modification you make directly to disk or to a database, but work with data in memory. In this tutorial we'll look at an example of that, and finally make use of our "model" class.
Saving to Memory

The factory pattern is one of the most important patterns, and one that you're likely to get asked about on job interviews and exams. It involves creating a method that instantiates and returns objects, rather than the user of the objects instantiating them directly with "new". This allows you to pre-configure objects or to engage in lengthy determinations of precisely which object to return, which can then be hidden from the end user of your API.
Factory Pattern

The Facade pattern is almost too simple to be called a pattern. Nevertheless, being familiar with it will prevent you from panic when your colleague or boss casually starts wittering about "creating some facades". When you see what it actually is, your mental state will change from panic to relief, combined with frustration that people can't just speak normally.

The Adapter pattern simply consists of a class that "adapts" from the interface implemented by some class (which contains the functionality you need) to a different interface.
Adapter Pattern
About the Instructor
John Purcell
4.4 Average rating
63,640 Reviews
987,145 Students
12 Courses
Software Development Trainer

After working as a software developer and contractor for over 14 years for a whole bunch of companies including CSC, Proquest, SPSS and AT&T in the UK and Netherlands, I decided to work full-time as a private software trainer. After spending four years in the beautiful city of Budapest, Hungary and a year in Berlin, I now live in my home town of Derby, UK.