遵循面向服务的体系结构和 MVVM 模式的挑战

别名挑战

遵循面向服务的体系结构和 MVVM 模式的挑战。

🚀 环境设置

🌍 项目规格

  1. Xcode 13+
  2. iOS 11+
  3. 斯威夫特 5
  4. MVVM

🧱 依赖

  1. Swinject 一个依赖注入框架
  2. Swinject自动注册扩展为Swinject
  3. Moya a 网络抽象层框架
  4. 翠鸟是一个纯 Swift 库,用于从 Web 下载和缓存图像
  5. 架UI一个骨架加载动画

🤔 关于项目

🗂 文件夹结构

AliasChallenge
|-- Services
|   -- Models
|-- SupportingFiles
|-- Networking
|-- App
|   -- Utilities
|   -- Extensions
|-- Dependencies // Dependencies Registrations into a DI Container
|-- Views // App Screens with SwiftUI
|   -- Home 

📦 依赖注入

对于服务注册,项目使用 SwinjectLibrary/Dependencies/Injector.swift

enum Injector {
    static let sharedAssambler: Assembler = {
        let container = Container()
        let assambler = Assembler(
            [
                ServiceAssembly()
            ],
            container: container
        )
        return assambler
    }()
}
  • ServiceAssembly Services registrations

🔌 App Communication

  graph TD;
      A(Networking) --> B(Services);
      B(Services) --> C(ViewModel);
      C(ViewModel) --> D(View);

GitHub

点击跳转