Ketergantungan Pembalikan IOS

Apr 15 2023
Apa itu Inversi Ketergantungan: Inversi ketergantungan adalah prinsip desain yang dapat diterapkan pada pengembangan iOS (serta pengembangan perangkat lunak lainnya). Prinsipnya menyarankan bahwa modul atau komponen tingkat tinggi tidak boleh bergantung pada modul atau komponen tingkat rendah secara langsung.

Apa itu Inversi Ketergantungan:

Pembalikan ketergantungan adalah prinsip desain yang dapat diterapkan pada pengembangan iOS (serta pengembangan perangkat lunak lainnya). Prinsipnya menyarankan bahwa modul atau komponen tingkat tinggi tidak boleh bergantung pada modul atau komponen tingkat rendah secara langsung. Sebaliknya, komponen tingkat tinggi dan tingkat rendah harus bergantung pada abstraksi atau protokol.

Mengapa abstraksi dan protokol:

Secara praktis, ini berarti bahwa saat membuat aplikasi iOS, pengembang harus membuat protokol atau antarmuka yang menentukan perilaku fitur atau komponen tertentu dalam aplikasi. Protokol ini kemudian harus diimplementasikan oleh kelas atau modul tertentu yang menyediakan fungsionalitas untuk fitur tersebut.

dengan menggunakan abstraksi dan protokol, kode lebih mudah dipelihara dan diuji, dan memungkinkan fleksibilitas yang lebih besar dalam mengubah atau mengganti komponen tanpa memengaruhi keseluruhan arsitektur aplikasi. Misalnya, jika komponen tertentu perlu diganti, aplikasi dapat terus berfungsi selama penggantinya sesuai dengan protokol atau antarmuka yang sama.

Contoh Praktis:

Katakanlah Anda sedang membangun aplikasi iOS yang mengambil data dari API web dan menampilkannya dalam tampilan tabel. Salah satu cara untuk mengimplementasikan ini adalah dengan memiliki pengontrol tampilan yang mengelola tampilan tabel melakukan panggilan langsung ke kelas klien web API untuk mengambil data.

Namun, ini menciptakan hubungan yang erat antara pengontrol tampilan dan klien API web, yang dapat membuat kode sulit untuk diuji dan dipelihara. Jika Anda ingin mengubah cara data diambil atau ditampilkan, Anda harus mengubah pengontrol tampilan, yang melanggar prinsip buka/tutup.

Untuk menerapkan prinsip Inversi Ketergantungan, Anda dapat membuat abstraksi dalam bentuk protokol atau antarmuka yang menentukan perilaku klien web API. Misalnya, Anda dapat menentukan protokol yang disebut APIClientdengan metode yang disebut fetchData, yang mengembalikan array objek data.

protocol APIClient {
    func fetchData(completion: @escaping ([DataObject]) -> Void)
}

class WebAPIClient: APIClient {
    func fetchData(completion: @escaping ([DataObject]) -> Void) {
        // Make HTTP request to fetch data and call completion block
    }
}

class TableViewController: UIViewController {
    let apiClient: APIClient
    
    init(apiClient: APIClient) {
        self.apiClient = apiClient
        super.init(nibName: nil, bundle: nil)
    }
    
    // ...
}

Misalnya, Anda dapat membuat implementasi tiruan APIClientyang mengembalikan data palsu untuk tujuan pengujian.

class MockAPIClient: APIClient {
    func fetchData(completion: @escaping ([DataObject]) -> Void) {
        let dataObjects = [DataObject(id: 1, name: "Object 1"), 
                           DataObject(id: 2, name: "Object 2")]
        completion(dataObjects)
    }
}

let mockAPIClient = MockAPIClient()
let tableViewController = TableViewController(apiClient: mockAPIClient)