Udemy

Python: SOLID Principles and Top Design Patterns

立即報名
  • 5,588 名學生
  • 更新於 10/2024
4.5
(670 個評分)
CTgoodjobs 嚴選優質課程,為職場人士提升競爭力。透過本站連結購買Udemy課程,本站將獲得推廣佣金,有助未來提供更多實用進修課程資訊給讀者。

課程資料

報名日期
全年招生
課程級別
學習模式
修業期
5 小時 51 分鐘
教學語言
英語
授課導師
Piotr Paweska
評分
4.5
(670 個評分)
2次瀏覽

課程簡介

Python: SOLID Principles and Top Design Patterns

Learn how to improve your Python code through mastery of S.O.L.I.D principles and the Top GoF Design Patterns.

We all want to become better software developers and be able to call ourselves "Software Engineers" or "Software Architects", but to do that you first have to master a number of design patterns.

This course will put you on a track to that destination.

We will teach you how to recognize when to use specific design patterns to build complex systems in a divide-and-conquer manner so that complexity is reduced and abstracted.

But rather than learning all the design patterns out there, we have curated the most important, the top fundamental GoF Design Patterns for you.


All of that in the context of the Object Oriented Python.


We start with full understanding of the S.O.L.I.D Design Principles and how they in turn relate to those design patterns. We explain everything in the context of real-world problems as well as specific code examples.

if you need a Python OOP Refresher, we have that for you. everything from classes to interfaces and abstract classes is covered. We will also show you how to code using pygame (Python Game Platform.)

At the end of the course you will get to Architect a solution by coding John Conway's Game of Life simulation which will run on your mobile device.


Complex software systems are plagued with three major issues:

  1. Timelines are stretched as requirements change.

  2. Multiple developers have a hard time coordinating their efforts.

  3. Code redundancy.

This in turn creates issues with maintenance and overall flexibility for adding new features. In general this means poorly designed systems that are hard to maintain and are not adaptable.

One answer to all the above problems is having a proper design and architecture. Think of a skyscraper being built. There is always a high-level blueprint. This blueprint is used to show everybody involved (from architects to supply chain to construction workers to machinery scheduling etc…) what is being worked on.


That way, everybody understands and follows the same vision.


A blueprint has a number of commonly understood elements which repeat themselves across many projects. For example all buildings need electrical wiring and plumbing, they might need elevators, and cooling systems, and underground parking lots, and of course stairs. They also usually are connected to the electrical grid and water supply as well as… roads.

All these common elements follow certain standards that have been improved over many many years and across many many projects. They are well understood and can be used almost like recipes.

In Software Engineering we also have a set of elements that repeat themselves across many projects. For example all software applications need to create objects, they need to communicate state change across those objects, they need to be able traverse over collections of those objects. In other words, if you want to be a better developer then you need to become proficient in those elements that have been time-tested. In the Software Engineering world these elements are known as “Design Patterns”


This course will teach students how to recognize when to use specific design patterns to build complex systems in a divide-and-conquer manner so that complexity is reduced and abstracted.

This will help you to design projects in an Architectural manner before any major development happens and can be used to shorten development time and reduce maintenance costs.


Design patterns are important because they are time-tested recipes or solutions to well-known software engineering problems. When creating software applications certain problems recur in a pretty predictable fashion so rather than ‘reinvent’ the wheel we will have an assortment of, if you will, wheels to choose from.

We will teach you this in a slightly different manner than you probably have been taught before. We will take a practical approach (i.e. specific examples) but the power of Design Patterns comes from their ‘concept’ and we will teach you the concept of those design patterns so that you are fully able to change them and modify them to your needs. In addition we will look at how to combine all those patterns into something greater: an architecture.


A well designed Architecture is this magical thing where the whole is greater than the sum of its parts.

This is what we will strive to teach you.

課程章節

  • 10 個章節
  • 60 堂課
  • 第 1 章 Introduction
  • 第 2 章 Python OOP *Refresher*
  • 第 3 章 What makes a Great Architecture?
  • 第 4 章 Singleton Design Pattern
  • 第 5 章 Factory Method Design Pattern
  • 第 6 章 Builder Design Pattern
  • 第 7 章 Adapter Design Pattern
  • 第 8 章 Strategy Design Pattern
  • 第 9 章 Observer Design Pattern
  • 第 10 章 State Design Pattern

課程內容

  • *Master* the most important and fundamental design patterns in modern Software Engineering within the *Python* ecosystem
  • Learn and internalize the S.O.L.I.D principles of design like seasoned *Senior Developers* do.
  • Get a deep understanding of the WHAT, WHY, and HOW for those *Fundamental Design Patterns*.
  • Get a full Architectural exposition (with UML) of each pattern as well as *real-world* scenarios with hands-on coding examples for each pattern.
  • Work on and complete Object Oriented *Python* assignments that will push your understanding of those patterns deeper and more fundamentally.
  • Learn how to *identify* the *best pattern* for the given Architectural challenge.


評價

  • J
    Juan Garcia
    5.0

    I´ve been reviewing python trainings for a training path and I´ve found this course very complete and focused. It will go on our OO programing section as the clear winner.

  • P
    Pavlo Mashchak
    4.0

    the course has some bugs that are not fixed, on the excersize 2 with Teams and Players I have exactly output needed in the task, the code is running, but tests are failing. There is no way to contact support or author to fix the test, so dissapointing.

  • Y
    Yang Liu
    2.5

    Your coding exercises are very unclear as to what the inputs and outputs of each function/class are

  • C
    Colm Duffy
    4.0

    I enjoyed this course, though, I would like to have gotten more from it. But I am reluctant to be too critical of the actual course, as I don't think I knew what I wanted till the end. Really what I want to walk away here with was not just a conceptual understanding of the patterns, but a template for project planning. All too often I end up developing and then thinking about architechture after. A course like this helps, but I think there could be more focus on that. Perhaps even a UML primer, and some more practical examples and projects. I have spent a decent bit of time on the final project, but not coding. Just learning UML and where patterns might fit. It may seem simplistic, but how to map all of that coherently I found challenging. A lot different that saying, "ok, I know what the state pattern is". The trick for me is translating that from theory, and small illustrative examples, to actual projects. I did not always get that from the pygame examples. I think a practical design element would be much more beneficial, but perhaps I am asking too much. Again, I do not want to be overly critical here, the content is good, it made me think, and it made me go further, and to realise some useful things about my own implementation to date. I come from a multidisciplary academic background, where the first contact with python or R will be "I want to make nice graphs". Then, a lot of the time you move from there to more data heavy models, its fine to get these working, but the issue is you are often afraid to share source code as you have not been following any standards and just "getting it to work". A lot of the time, you just don't know what you don't know. That issue means you do not know what to engage in first to get up to speed, and when you do engage, there are knowledge pre-requisites that can act as a barrier. AI tools can help fill the gaps in knowledge, but often they will suggest some hackish way of doing things that further entrenches your old terrible way of doing things. I appreciate this has become a blog rather than a review, but perhaps it will be useful for courses in the future. thank you

立即關注瀏覽更多

本網站使用Cookies來改善您的瀏覽體驗,請確定您同意及接受我們的私隱政策使用條款才繼續瀏覽。

我已閱讀及同意