Design Patterns

Course Features

Course Details

Course Objectives
After the completion of Design Patterns Training course at Iteanz, you will be able to:
1. Create great software designs that are scalable and easily maintainable
2. Understand the best use of Object Oriented concepts for creating truly OOP programs
3. Use creational design patterns in software design for class instantiation
4. Use structural design patterns for better class and object composition
5. Use behavioural patterns for better organization and communication between the objects
6. Use anti patterns for reversing the underlying causes of design problems and implementing productive solutions
7. Use refactoring to compose the methods for proper code packaging
8. Use refactoring to better organize the class responsibilities of current code

Who should go for this course? 
This course is designed for software programmers and architects who are looking for ways to improve the existing designs or create better designs of software projects. This course is extremely comprehensive and addresses differing types of complex design problems and the methods to handle them.

Pre-requisites
The only prerequisite for learning Design Patterns is the knowledge of the Object Oriented Programming concepts.
Project Work
Application Definition Statement: 
1. Create a Retail Store complex management system for an urban development authority in a major city
2. The city's urban development authority has multiple shopping complexes across the city
3. Each complex needs to be managed by its own management entity
4. The urban development authority manages all the complexes in the city using these complex management systems

Here's a brief description of each class: 
1) Store complex
The Store complex is either an applet or application. The store complex performs the creation of a set of different stores, such as a book store, a shoe store, an electronic games store, etc.
The complex greets an arriving customer and allows the customer to shop in any of the stores.
Some of the things a customer can do at the complex are:
• Get a list of available stores
• Enter a store
• Get the list of the items for sale at the store
• Add items to the shopping cart
• Proceed to the checkout and purchase the items

2) Store
Abstract superclass for a store
3) BookStore
A possible subclass of Store
4) ShoeStore
A possible subclass of Store
5) GameStore
A possible subclass of Store
6) Item
An item for sale in a Store
7) Customer
Notable Attributes:
Name - the name of the customer
ShoppingCart - the shopping cart being used by the customer Store - the store the customer is currently in
8) ShoppingCart
A shopping cart for the customer
Notable Attributes:
Items - items currently in the shopping cart

What will you learn?
1. To bring together key design pattern concepts in a single application
2. To expose some common design problems that come up while designing such big software systems having communicating components
3. To present some design choices based on the data/design of the application

Why learn Design Patterns?
Object Oriented Programming is one of the biggest evolution ever happened to the software industry. Lots of languages started implementing OOP concepts thinking it would add lot of value and will improve the adaptability of the languages. While the OOP provides the concepts, programming languages still lack the essence that is needed for better software design. Design patterns fill the gap by providing solution templates for commonly occurring design problems. As any other software entity, Design Patterns is an evolving subject and it has reached its extreme maturity now by covering most of the design problems that the current software industry is facing. Practicing design patterns has helped the success ratio of software projects these days immensely. Design patterns have become a magic wand in the hands of successful software programmers and architects.
1. Introduction to Design Patterns
Learning Objectives - In this module, you will understand the basic overview of OOP concepts and implementation of DAO & Factory Pattern. (a) Object Oriented Programming concepts (b) Unified Modeling Language (c) Introduction to Design Patterns (d) SOLID Principles (SRP, OCP, LSP, IS, DI)
Topics - Inheritance, Polymorphism, Interfaces, Different Member Field Attributes, Understand Design Patterns, Design Patterns using well defined UML Diagrams, Importance of Design Patterns, Introduction to different Classes of Design Patterns, Implementing DAO and Factory Pattern.
2. Creational Design Patterns
Learning Objectives - In this module, you will learn the Creational Design Pattern concepts and application using Java code examples.
Topics- Abstract Factory, Builder, Factory, Prototype, Singleton, Object Pool.
3. Structural Design Patterns
Learning Objectives - In this module, you will be able to learn Structural Design Pattern concepts and application using Java code examples.
Topics- Adapter, Bridge, Composite, Decorator, Facade, Flyweight, MVC, Front Controller, Module, Proxy.
4. Behavioural Patterns
Learning Objectives - In this module, you will learn Behavioral Design Pattern concepts and application using Java code examples.
Topics- Chain of Responsibility, Command, Iterator, Mediator, Observer, Strategy, Template Method, Visitor.
5. Concurrency Design Patterns
Learning Objectives - In this module, you will learn Concurrency Design Pattern concepts and application using Java code examples.
Topics- Active Object, Monitor Object, Half-Sync/Half-Async, Leader/Followers, Thread Specific Storage, Thread Pool, Scheduler.
6. Anti Patterns
Learning Objectives - In this module, we will explain the negative consequences that arises out by applying wrong design patterns to a problem.
Topics- Software Design Anti Patterns, Software Development Anti Patterns, Overview of Management Anti Patterns.
7. Refactoring
Learning Objectives - In this module, you will learn the basic fundamentals that need to be taken into consideration while applying the Design Pattern principles that were learnt in previous modules.
Topics- Compose Methods, Move Features between Objects, Organize Data, Conditional Expressions Simplification, Simplifying Methods, Generalization.
8. Project and Retrospection
Learning Objectives - In this module, you will be able to apply all the concepts used in previous modules to come up with scalable design for a given project.
Topics- Iterator Pattern, Abstract Factory, Observer Design Patterns.
This course does not have any sections.

More Courses by this Instructor