Với mô hình VIPER, chúng ta tham khảo kiến trúc như sau
viper
Một số lưu ý trong cây thư mục của module mà chúng ta đang phát triển:
+ View ( ViewController , extension Protocol ) : chứa X_ViewController và X_ViewControllerProtocol
X_ViewController
Biến:
var presenter : X_PresenterProtocol
func showView ( ví dụ viewDidLoad() )
Trong func viewDidLoad(), chúng ta phải làm 1 số việc cơ bản sau
Gọi tới X_WireFrame :: Tiến hành khởi tạo dữ liệu -> chỗ này sai rồi nhé, View không tương tác với WireFrame
Khởi tạo dữ liệu
Khởi taọ presenter và thực hiện presenter.viewDidLoad()
presenter được khởi tạo thế nào vậy???

X_ViewControllerProtocol
var presenter : PresenterProtocol? {get set}
func : showView

+ Presenter ( NSObject + Protocol ) : đây là phần code nặng nhất và là phần lõi chính trong module , và là khu vực điều hướng chính , gồm Presenter và PresenterProtocol
Presenter
Biến:
var view : ViewProtocol
var wireFrame : WireFrameProtocol
var interactor : InteractorProtocol
func viewDidLoad
func loadItems
func showSelectedItem

PresenterProtocol : có đầy đủ các hàm
var view : ViewProtocol? {get set}
var wireFrame : WireFrameProtocol? {get set}
var interactor : InteractorProtocol? {get set}
func viewDidLoad
func loadItems
func showSelectedItem

+ Interactor ( X_InputProtocol ) : đây là phần kết nối giữa Presenter và Entity (model) , gồm Interactor và InteractorInputProtocol và InteractorOutputProtocol
File Interactor
Biến:
var presenter : PresenterProtocol
func loadItems
func

File InteractorProtocol ( chú ý là sẽ gồm InteractorInputProtocol và InteractorOutputProtocol )
X_InteractorInputProtocol
var presenter : DishListInteractorOutputProtocol? {get set}

X_InteractorOutputProtocol

+ Entity : model
File Model: NSObject v.v tuỳ tình hình

+ Router : phần điều hướng, được viết WireFrame
File WireFrame
let presenter = Presenter()
let interactor = Interactor()
let wireFrame = WireFrame()
let localDataManager = LocalDataManager()
let remoteDataManager = RemoteDataMangager()
và chúng ta tiến hành set rất nhiều thứ trong này gần như đẻ khởi tạo biến
func showDetail1 , showDetail2 , static func createPromotionDetailViewController, hoặc class func createPostListModule() -> UIViewController , hoặc class func createListFoodModule(foodListref: ListFoodView)

File WireFrameProtocol
var presenter : PresenterProtocol? {get set}

Chúng ta sử dụng nguồn bài viết ở đây làm hướng dẫn chính nhé
https://medium.com/swift-india/viper-architecture-example-in-ios-in-swift-4-6f656a441f7c
https://github.com/GABHISEKBUNTY/Viper-Architecture
và áp dụng vào dự án đang triển khai để nắm tình hình thực tế

About the Author

Trần Huy

View all author's posts

Bài viết khác

Kanban

1. Kanban là gì? Kanban là một phương pháp quản lý công việc trực quan, giúp bạn theo dõi tiến độ từng nhiệm vụ. Kanban bắt nguồn từ Nhật Bản, ban đầu được Toyota dùng để quản lý dây chuyền sản xuất, nhưng ngày nay được áp dụng rộng rãi trong các lĩnh vực như […]

Scum

1. Scrum là gì? Scrum là một khung làm việc (framework) giúp các nhóm làm việc cùng nhau để phát triển sản phẩm một cách linh hoạt và hiệu quả. Nó thuộc phương pháp Agile – đề cao sự thích nghi, cộng tác và cải tiến liên tục trong quá trình làm việc. 2. Các […]

So sánh Realm, Hive, Sqflite, và Drift

So sánh Tiêu chí Realm Hive Sqflite Drift Mức độ phổ biến Tăng nhanh (Meta hỗ trợ) Rất phổ biến Rất phổ biến Trung bình (cộng đồng ổn định) Dễ sử dụng, dễ tích hợp Trung bình (cần setup Realm SDK) ★ Rất dễ (NoSQL, không cần SQL) Trung bình (phải viết SQL tay) Trung […]

Testing

I. Testing là gì? Testing (kiểm thử phần mềm) là quá trình đánh giá một hệ thống phần mềm để xác định xem sản phẩm có đáp ứng các yêu cầu được đặt ra hay không, và nhằm phát hiện lỗi nếu có. Testing là một phần quan trọng trong vòng đời phát triển phần […]

Application security

Ứng dụng bảo mật là gì? Application Security (Bảo mật ứng dụng) là quá trình bảo vệ ứng dụng khỏi các lỗ hổng và tấn công từ các mối đe dọa bên ngoài. Quá trình này bao gồm các biện pháp bảo vệ trong suốt vòng đời phát triển phần mềm (SDLC): từ thiết kế, […]

MVC/MVP

1. Giới thiệu chung Trong phát triển phần mềm, việc tổ chức mã theo mô hình kiến trúc rõ ràng là rất quan trọng để dễ dàng bảo trì, mở rộng và kiểm thử. Hai mô hình phổ biến trong phát triển ứng dụng là: MVC (Model – View – Controller) MVP (Model – View […]