[Day17] Flutter - 实作篇:专案架构 (Domain Driven Design)

前言

Hi, 我是鱼板伯爵身为一个软件工程师,我们最常见的问题就是变动的需求。而程序码变更,就会有机会出现不可预期 Bug,有时候已经不是小拇指和食指动一动就可以解决的问题,因此设计模式可以降低程序的债务。本次专案目标就是利用DDD架构一步步带大家写出一个点击小游戏。

在这篇中给大家一些基本的概念可以在往後的实作中渐渐熟悉,如果想要更了解这个架构,可以到文章的最下面我放了几篇推荐的文章还有一个对专案管理有帮助的影片,虽然有一部是用 Ruby 来讲解的。

Domain Driven Design

在这个架构在於每一层都有独立的事情,我们可以使他们的工作分割得更乾净,这将带给程序乾净、易於测试和阅读。有的人认为小型团队使用这种架构只会拖累开发速度,虽然我并不反对,但是壮大後会下定决心更改架构的很少,因为要改成新架构时要投入的时间可能会是好几倍,有时候几乎是打掉重练,这就是我想分想给大家的原因。

从上图可以发现流程就跟盖房子一样,每个功能都是一栋房子不断的循环着固定的建造流程,可以想像你的的专案就是一座城市。

架构优缺点

优点:

  • 专注在核心业务上
  • 能够应对未来的成长
  • 保护业务逻辑
  • 快速找到Bug

缺点:

  • 需要一个熟悉架构的人来分配
  • 开发速度慢

资料夹结构

这是我的简单创建的资料夹结构范例,里面最主要包含了上面所讲的application(infrastructure与presentation的桥梁)、presentation(所有场景)、infrastructure(功能)和domain(输出资料)清楚的分类着,乾净的资料夹可以让你更好找到你需要的档案,往後的教学都会遵循这个规则创建任何档案。

├── lib
│   ├── application
│   │   ├── auth
│   │   │   ├── auth_bloc.dart
│   │   │   ├── auth_event.dart
│   │   │   └── auth_state.dart
│   │   └── sign_in
│   │       ├── sign_in_bloc.dart
│   │       ├── sign_in_event.dart
│   │       └── sign_in_state.dart
│   ├── config
│   │   └── environment.dart
│   ├── domain
│   │   └── failure.dart
│   ├── infrastructure
│   │   └── auth
│   │       └── auth_repository.dart
│   ├── main.dart
│   └── presentation
│       ├── router
│       │   └── router.dart
│       └── screens
│           ├── home
│           ├── login
│           └── splash

需要具备的知识

目录

推荐文章

Note:

本次专案会频繁的使用 Bloc 套件请大家熟悉。

程序码就跟泥巴球一样只会越滚越大,乾净的程序可以降低维护成本。


<<:  Day 2. Pre-Start × WYSIWYG

>>:  D 语言和你 SAY HELLO!!

Swift纯Code之旅 Day22. 「切割TableView(1) - 实作TableViewHeader」

前言 新增闹钟页面的画面几乎都完成了,但门面可是很重要的,因此开始实作闹钟的首页吧! 先参考一下IP...

How Much Does It Actually Cost To Hire A Hacker?

[How to Hire a Hacker Near Me] ( https://hackeronr...

用React刻自己的投资Dashboard Day13 - 制作分页(Pagination)功能

tags: 2021铁人赛 React 一般的内容网站通常都会有将内容分页或是动态读取的功能,例如像...

【设计+切版30天实作】|Day22 - 设计小广告 - 背景上又有背景到底怎麽切!

前面完成了「PainPoints」,今天来完成这一块「小广告」的区块。 数据收集 Content标...