/DesignPatternsJava9

This repository contains working project code used for Video Course by Packt Publication with title "Learn Design Patterns with Java " authored by "Aseem Jain". The link of the course is

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

Learn Design Patterns with Java by Aseem Jain

This repository contains working project code used in video Course by Packt Publication with title "Learn Design Patterns with Java " authored by "Aseem Jain".

Course link:

https://www.packtpub.com/application-development/learn-design-patterns-java-9-video

Course introduction Video

Course introduction video

Click to play video

Repository over view

This course exposes you to a very rich github code repository which has around 50 different working code projects. Code is organized in separate branches, which means all code related to singleton design pattern is in single-pattern branch and all code related observer pattern is observer-pattern branch. Each branch has related diagrams in the branch. The commit history also helps you evovle the code. You are supposed to clone or download the code base and exectue it locally or play with it for deeper learning. You can own the repo by forking it and modify code as much as you want. Remember the rule, more you code better you learn ;-)

This repository has several branches and each branch contains code of a design pattern. https://github.com/premaseem/DesignPatternsJava9/tree/pattern-name

Example:

To look at code of Decorator pattern you might have to switch to branch decorator pattern link: https://github.com/premaseem/DesignPatternsJava9/tree/decorator-pattern switch branch

Links for useful resources mentioned in the course:

https://github.com/premaseem/DesignPatternsJava9/blob/master/Useful%20Links%20for%20the%20course.pdf

Authors blog on design patterns:

https://premaseem.wordpress.com/category/computers/design-patterns/

Software Design pattern community face book page:

https://www.facebook.com/DesignPatternGuru/

Course Overview:

Learn and master common design patterns in Java , and become an efficient programmer. In this course, you will start by exploring the benefits of using design patterns for developers in their regular development environment. You will move on to see which design patterns are suited for which circumstances. You will see the different categories to which the Design Patterns belong. Throughout this course, each type of Design Pattern will be accompanied by a practical example and information on when to use a given Design Pattern. You will also be shown scenarios in which specific Design Patterns are to be avoided. In the end, you will learn how to overcome any issues that may be encountered while using design patterns initially.

Who this course is for:

This course is for those programmers/developers who have a basic knowledge of OOPs (preferably in Java) and are looking to refine their code through design patterns in their day to day coding practice.

What you will learn from this course:

  1. Understanding complex coding issues in easy-to-understand code examples
  2. Brain-friendly examples with real-life analogies
  3. Practical coding examples for practice and ease of understanding
  4. Mini projects as assignments to ensure that you are able to apply design patterns
  5. Practical guide for design patterns (not boring theory but 100% practical coding as a reference guide )
  6. Will help you develop good coding habits.
  7. Understand complex designs and architecture effortlessly.
  8. Develop non-cluttered reusable code with industry standard proven solutions documented in design patterns.

Table of Contents

1. Getting Started with Design Patterns

  • The Course Overview
  • How to Write Better Code
  • Code Issues Versus Design Issues
  • What Are Design Patterns
  • Benefits of a Design Pattern for a Developer
  • How Design Patterns Are Similar to Life Patterns
  • Are Design Patterns Different for Different Languages
  • Setting Up the Development Environment
  • Issues Faced Due to Force Fitting Everything in Object Inheritance
  • Fundamental Concepts of Code Reusability

2. Categorization of Design Pattern

  • No Silver Bullet to Solve All Design Issue in Software
  • Recognize the Pattern of Problem and Design Solution to Solve It
  • Categorizing Design Patterns
  • Framework Architecture

3. Creational Design Patterns

  • Singleton Design Pattern
  • Prototype Design Pattern
  • Builder Design Pattern
  • Factory Design Pattern
  • Abstract Factory Design Pattern

4. Structural Design Patterns

  • Adapter Design Pattern
  • Proxy Design Pattern
  • Facade Design Pattern
  • Bridge Design Pattern
  • Composite Design Pattern
  • Flyweight Design Pattern
  • Decorator Design Pattern

5. Behavioral Design Patterns - The Beginning

  • Iterator Design Pattern
  • Mediator Design Pattern
  • Command Design Pattern
  • Chain of Responsibility Design Pattern
  • Interpreter Design Pattern

6. Behavioral Design Patterns — the Conclusion

  • Observer Design Pattern
  • Strategy Design Pattern
  • State Design Pattern
  • Template Method Design Pattern
  • Visitor Design Pattern
  • Memento Design Pattern

7. Conclusion

Note:

  • This code base will work on Java 9 and above versions.
  • diagrams folders carry UML diagrams.
  • pattern folder has code of primary example.
  • patternBonus folder has code of secondary or bonus example.