Software Architecture (SOLID) & Design Patterns in Java
What you'll learn
- understand SOLID principles
- understand the core of design patterns
- undertand object oriented design
- understand the single responsibility principle
- understand the open / closed principle
- understand the Liskov substitution principle
- understand the interface segregation principle
- understand the dependency inversion principle
- understand creational design patterns (singleton pattern, factory pattern, builder pattern and prototype pattern)
- understand behavioral design patterns (strategy pattern, command pattern, visitor pattern and template pattern)
- understand structural design patterns (adapter pattern, facade pattern and decorator pattern)
- Basic Java
- Object oriented programming
This course is about software architecture and design patterns. We will talk about two man topics: SOLID principles and design patterns. We are going to implement the problems in Java, but the theoretical background is language-independent. I highly recommend typing out the implementations several times on your own in order to get a good grasp of it.
Section 1 - SOLID Principles
what are SOLID principles?
single responsibility principle
open closed principle
Liskov's substitution principle
interface segregation principle
dependency inversion principle
what is dependency injection?
Section 3 - Creational Design Patterns
what are creational design patterns?
abstract factory pattern
Section 2 - Behavioral Design Patterns
what are behavioral design patterns?
template pattern and null object pattern
Section 3 - Structural Design Patterns
what are structural design patterns?
Section 4 - Model-View-Controller (MVC) Pattern
the model-view-controller (MVC) model
an application with Java Swing
In the first part of the course we are going to learn about the SOLID principles. We are going to talk about the theory as well as the implementations.
The second part of the course is about design patterns. We should have a deep understanding of these patterns in order to be able to write reusable software components. These techniques are becoming more and more important as applications are getting more and more complex, so - in my opinion - these topics are good to know.
Thank for joining the course, let's get started!
Who this course is for:
- This course is meant for newbies who are familiar with Java and want to be able to write reusable code
My name is Balazs Holczer. I am from Budapest, Hungary. I am qualified as a physicist. At the moment I am working as a simulation engineer at a multinational company. I have been interested in algorithms and data structures and its implementations especially in Java since university. Later on I got acquainted with machine learning techniques, artificial intelligence, numerical methods and recipes such as solving differential equations, linear algebra, interpolation and extrapolation. These things may prove to be very very important in several fields: software engineering, research and development or investment banking. I have a special addiction to quantitative models such as the Black-Scholes model, or the Merton-model.
Take a look at my website if you are interested in these topics!