|
via Udemy |
Go to Course: https://www.udemy.com/course/basics-of-software-architecture-design-in-java/
Are you ready to take your coding skills to the next level? This course is your gateway to writing clean, maintainable, and scalable software by mastering two of the most important pillars of software architecture: SOLID principles and design patterns.We'll start by diving deep into the SOLID principles - five core guidelines every professional developer should know. You'll not only learn the theory behind each principle but also see how to implement them in Java through hands-on examples.Next, we'll explore the world of design patterns, the time-tested solutions to common software design problems. You'll learn how these patterns help you write flexible and reusable code - an essential skill as software systems become increasingly complex.Section 1 - SOLID Principleswhat are SOLID principles?single responsibility principleopen closed principleLiskov's substitution principleinterface segregation principledependency inversion principlewhat is dependency injection?Section 3 - Creational Design Patternswhat are creational design patterns?singleton patternfactory patternabstract factory patternbuilder pattern prototype patternSection 2 - Behavioral Design Patternswhat are behavioral design patterns?strategy patternobserver patterncommand patterniterator patterntemplate pattern and null object patternvisitor patternSection 3 - Structural Design Patternswhat are structural design patterns?decorator patternflyweight patternfacade patternadapter patterncomposite patternbridge patternSection 4 - API DesignSOAPRPCRESTSection 5 - Software Architecturesmonolithic architecturelayered (n-tier) architectureservice oriented architecture (SOA)micorservice architectureSection 6 - Data Storage Designrelational databasesnon-relational databasesscaling relational and non-relational databasesreplication and shardingCAP theoremWhile the implementation will be in Java, the concepts are language-agnostic and valuable to any developer, regardless of your tech stack.This is a practical course - I strongly encourage you to code along and re-implement the examples yourself. This is the best way to build a strong foundation and internalize the patterns and principles we'll cover.Whether you're a junior developer looking to build solid habits or an experienced programmer aiming to sharpen your design skills, this course is for you.Thanks for joining - now let's dive in and level up your software design skills!