CodeGym /Java Blog /Java Developer /Coding Skills LevelUp, Part 3. Where to Learn About Desig...
Level 41

Coding Skills LevelUp, Part 3. Where to Learn About Design Patterns

Published in the Java Developer group
Continuing our series of pieces about additional programming-related subjects that are not a part of CodeGym’s course, with links and recommendations on where you can learn them. Today we are going to talk about design patterns. Coding Skills LevelUp, Part 3. Where to Learn About Design Patterns - 1

What is Design Patterns

In software development, design patterns are general and reusable solutions to various commonly occurring problems. Design patterns are not complete designs, but rather templates and descriptions that are explaining how a certain problem can be solved. Design patterns may be viewed as a structured approach to computer programming intermediate between the levels of a programming paradigm and a concrete algorithm, according to Wikipedia’s description of the concept. Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved. Patterns that imply mutable state may be unsuited for functional programming languages, some patterns can be rendered unnecessary in languages that have built-in support for solving the problem they are trying to solve, and object-oriented patterns are not necessarily suitable for non-object-oriented languages. Design patterns are considered important, because studies have shown they play a major role in growing complexity and improving maintainability of the software. "Our study has shown that the primary studies provide empirical evidence on the positive effect of documentation of design pattern instances on program comprehension, and therefore, maintainability. While this result is not surprising, it has, however, two indications. First, developers should pay more effort to add such documentation, even if in the form of simple comments in the source code. Second, when comparing results of different studies, the effect of documentation has to be considered," according to authors of a recent study.

Books about design patterns

Head First Design Patterns is considered to be one of the best books about design patterns for Java developers, both fresh ones and those who have years of professional experience, but never studied design patterns. Latest edition of Head First Design Patterns, updated for Java 8, shows you the tried-and-true, road-tested patterns used by developers to create functional, elegant, reusable, and flexible software. “By the time you finish this book, you’ll be able to take advantage of the best design practices and experiences of those who have fought the beast of software design and triumphed. Using the latest research in cognitive science and learning theory to craft a multi-sensory learning experience, Head First Design Patterns uses a visually rich format designed for the way your brain works, not a text-heavy approach that puts you to sleep,” the author of the book promises in the annotation.

This book, Design Patterns in Java, is great for its practice-first approach and deep insight that you need to fully leverage the power of design patterns in any Java software project. Drawing on their extensive experience as Java instructors and programmers, Steve Metsker and Bill Wake illuminate each pattern with real Java programs, clear UML diagrams, and compelling exercises. Readers will quickly move from theory to application, learning how to improve new code and refactor existing code for simplicity, manageability, and performance.

This one will be very helpful to JEE developers. Real World Java EE Patterns discusses patterns and best practices in a structured way, with code from real world projects. The rewritten and re-edited version of this book covers an introduction into the core principles and APIs of Java EE 6, principles of transactions, isolation levels, CAP and BASE, remoting, pragmatic modularization and structure of Java EE applications, discussion of superfluous patterns and outdated best practices, patterns for domain driven and service oriented components, custom scopes, asynchronous processing and parallelization, real time HTTP events, schedulers, REST optimizations, plugins and monitoring tools, and fully functional JCA 1.6 implementation.

Head First Object-Oriented Analysis & Design shows you how to analyze, design, and write serious object-oriented software. It teaches how to use OO principles like encapsulation and delegation to build applications that are flexible, how to apply the Open-Closed Principle (OCP) and the Single Responsibility Principle (SRP) to promote reuse of your code, how to leverage the power of design patterns to solve your problems more efficiently. You will also learn to use UML, use cases, and diagrams to ensure that all stakeholders are communicating clearly to help you deliver the right software that meets everyone's needs.

In this work, four experienced designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves. The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems.

Online courses on design patterns

This course extends object-oriented analysis and design by incorporating design patterns to create interactive applications. Through a survey of established design patterns, you will gain a foundation for more complex software applications. Finally, you will identify problematic software designs by referencing a catalog of code smells.

This is the fourth course in the specialization about learning how to develop video games using the C# programming language and the Unity game engine on Windows or Mac. Will be good for those who are interested in game development.

YouTube channels and playlists

In this video tutorial, Derek Banas covers all of the most common design patterns. He also explains when to use them and other topics on OOP design principles.

Another decent design patterns tutorial, this time done by Christopher Okhravi.

Finally, a design patterns tutorial explained in simple words using real-world examples by Mosh Hamedani, author of a popular channel Programming with Mosh.
Comments (1)
horst Level 26, Not in list
7 March 2021
I just finished the first three weeks of the Coursera-Course mentioned in the article and it provides a nicely structured overview of the major patterns including some useful analogies and as a bonus: all the example code is given in Java. (However, if you never heard of design-patterns before, the material might be a little bit too condensed.) One website I can additionally recommend for looking-up and reading on patterns - less for learning about them in the first place - is this one: Apart from the neat illustrations it comes with a lot of examples, analogies, and sample implementations in different languages for each of the major patterns.