Flutter & Dart:SOLID 原则和顶级设计模式
学习如何通过掌握 S.O.L.I.D 原则和 Top GoF 设计模式来改进你的 Flutter & Dart 代码。
教程演示🔗
What you’ll learn 学习内容
-
*Master* the most important and fundamental design patterns in modern Software Engineering within the *Flutter* framework using *Dart*
*掌握*现代软件工程中最重要和最基本的设计模式,在*Flutter*框架内使用*Dart* -
Learn and internalize the S.O.L.I.D principles of design like seasoned *Senior Developers* do.
学习并内化 S.O.L.I.D 设计原则,就像经验丰富的*高级开发人员*所做的那样。 -
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.
获取每个模式的完整架构说明(使用 UML)以及*真实世界*场景,以及每个模式的动手编码示例。 -
Work on and complete Dart-based assignments that will push your understanding of those patterns deeper and more fundamentally.
完成基于 Dart 的作业,这将推动你对这些模式的更深入、更根本的理解。 -
Learn how to *identify* the *best pattern* for the given Architectural challenge.
了解如何*识别*给定架构挑战的*最佳模式*。
Requirements 要求
-
It is assumed that you know your way around Flutter and Dart. Only basic experience is required.
假设您熟悉 Flutter 和 Dart 的方法。只需要基本经验。 -
You should be able to run the Dart code that is provided with the course. We will use Visual Studio Code as our IDE but you can use any IDE you like.
您应该能够运行课程随附的 Dart 代码。我们将使用 Visual Studio Code 作为我们的 IDE,但你可以使用任何你喜欢的 IDE。 -
Access to a computer. A Mac, Windows, or a Linux based operating system is equally fine. All the tools are OS Independent.
访问计算机。Mac、Windows 或基于 Linux 的操作系统同样适用。所有工具都与操作系统无关。 -
You should have access to a mobile device but this is not strictly necessary as we will develop our code on an emulator/simulator first.
您应该可以访问移动设备,但这并不是绝对必要的,因为我们将首先在模拟器/模拟器上开发代码。
Description 描述
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.
但是,我们并没有学习所有的设计模式,而是为您策划了最重要的、最基本的 GoF 设计模式。
All of that in the context of the Flutter Framework using Dart.
所有这些都是在使用 Dart 的 Flutter 框架的上下文中完成的。
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 eplain everything in the context of real-wprld problems as well as specific code examples.
我们首先要充分理解 S.O.L.I.D 设计原则,以及它们如何与这些设计模式相关联。我们在实际 wprld 问题的上下文以及特定的代码示例中对所有内容进行解释。
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.
在课程结束时,您将通过编写 John Conway 的 Game of Life 模拟来构建解决方案,该模拟将在您的移动设备上运行。
Complex software systems are plagued with three major issues:
复杂的软件系统存在三个主要问题:
-
Timelines are stretched as requirements change.
随着需求的变化,时间线会被拉长。 -
Multiple developers have a hard time coordinating their efforts.
多个开发人员很难协调他们的工作。 -
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.
上述所有问题的一个答案是拥有适当的设计和架构。想想一座正在建造的摩天大楼。总有一个高级蓝图。该蓝图用于向所有相关人员(从建筑师到供应链到建筑工人到机械调度等)展示正在做什么。
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.
这就是我们将努力教给你的。
Who this course is for:
本课程适用于谁:
- *Flutter & Dart* developers who want to learn to Design, Architect, and ultimately develop *better code*.
*Flutter & Dart* 开发人员,他们想要学习设计、架构并最终开发*更好的代码*。 - Developers who want to get a deep understanding of what makes GREAT *Software Architecture*.
想要深入了解是什么造就了伟大的*软件架构*的开发人员。