iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
0
自我挑戰組

打造專案管理 iOS App 系列 第 16

安能取熊掌而捨魚? Singleton 淺解

  • 分享至 

  • xImage
  •  

安能取熊掌而捨魚? Singleton 淺解

Singleton 的英文意義是獨身,也就是只有一個人,應用在物件導向語言上,通常翻譯作單例:單一個實例(Instance)。Singleton 模式可以保證一個類別只有一個實例,並提供一個訪問(visit)這個實例的方法。


資料來源:https://openhome.cc/Gossip/DesignPattern/SingletonPattern.html

實作看看

先建立一個class

import Foundation

class UserDataManager{
    
}

建立一個private(set)的變數

private(set) 是唯讀的意思

private(set) var userData:GetUserResponse.UserData?

只允許自己實例化

 private init(){}

實例化

static let shared = UserDataManager()

賦予 singleton CRUD 部分功能

什麼是 CRUD?

這個案例只會用到Read與Delete的功能。

Read

func getUserData(email:String,complection:@escaping (UIImage)->Void){
        let headers = ["userToken":UserToken.shared.userToken]
        
        let request = HTTPRequest(endpoint: .user, contentType: .json, method: .GET, headers: headers, mail: email).send()
        NetworkManager.sendRequest(with: request) {  (res:Result<GetUserResponse,NetworkError>) in
            switch res {
                
            case .success(let data ):
                self.userData = data.userData
                self.email = email
                if let imageURL = self.userData!.image{
                    self.takeImage(imageURL, complection: complection)
                }
            //TODO顯示
            case .failure(let err): print(err.description)
            //alert
            print(err.errMessage)
            }
        }
    }

Delete

    func clearData(){
        self.userData = nil
        self.userImage = nil
        self.email = nil
    }


上一篇
安能取熊掌而捨魚? addTarget 邏輯疑解
下一篇
夢的伊甸園還在那邊 步入中期,愈發精彩
系列文
打造專案管理 iOS App 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言