? ? ? ?在各個層下面,又是如何劃分的呢?江西網絡公司-百恒網絡建議大家可以按照業務模塊劃分,也可以按照組件功能劃分。在本應用中,PersistenceLayer層還要分成dao和domain兩個組。dao用于放置數據訪問對象,該對象中有訪問數據的CRUD四類方法。為了降低耦合度,dao一般要設計成為協議(或Java接口),然后根據不同的數據來源采用不同的實現方式。domain組是實體類,實體是應用中的“人”、“事”、“物”等。
? ? ??在dao組中,NoteDAO.swift中的代碼如下:
? ? ? ?import Foundation
? ? ? ?class NoteDAO {
? ? ? ?//保存數據列表
? ? ? ?var listData: NSMutableArray!
? ? ? ?class var sharedInstance: NoteDAO {
? ? ? ?struct Static {
? ? ? ?static var instance: NoteDAO?
? ? ? ?static var token: dispatch_once_t = 0
? ? ? ?}
? ? ? ?dispatch_once(&Static.token) {
? ? ? ?Static.instance = NoteDAO()
? ? ? ?//添加一些測試數據
? ? ? ?var dateFormatter : NSDateFormatter = NSDateFormatter()
? ? ? ?dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
? ? ? ?var date1: NSDate = dateFormatter.dateFromString("2015-01-01 16:01:03")!
? ? ? ?var note1: Note = Note(date:date1, content: "Welcome to MyNote.")
? ? ? ?var date2: NSDate = dateFormatter.dateFromString("2015-01-02 8:01:03")!
? ? ? ?var note2: Note = Note(date:date2, content: "歡迎使用MyNote。")
? ? ? ?Static.instance?.listData = NSMutableArray()
? ? ? ?Static.instance?.listData.addObject(note1)
? ? ? ?Static.instance?.listData.addObject(note2)
? ? ? ?}
? ? ? ?return Static.instance!
? ? ? ?}
? ? ? ?//插入備忘錄的方法
? ? ? ?func create(model: Note) -> Int {
? ? ? ?self.listData.addObject(model)
? ? ? ?return 0
? ? ? ?}
? ? ? ?//刪除備忘錄的方法
? ? ? ?func remove(model: Note) -> Int {
? ? ? ?for note in self.listData {
? ? ? ?var note2 = note as Note
? ? ? ?//比較日期主鍵是否相等
? ? ? ?if note2.date == model.date {
? ? ? ?self.listData.removeObject(note2)
? ? ? ?break
? ? ? ?}
? ? ? ?}
? ? ? ?return 0
? ? ? ?}
? ? ? ?//修改備忘錄的方法
? ? ? ?func modify(model: Note) -> Int {
? ? ? ?for note in self.listData {
? ? ? ?var note2 = note as Note
? ? ? ?//比較日期主鍵是否相等
? ? ? ?if note2.date == model.date {
? ? ? ?note2.content = model.content
? ? ? ?break
? ? ? ?}
? ? ? ?}
? ? ? ?return 0
? ? ? ?}
? ? ? ?//查詢所有數據方法
? ? ? ?func findAll() -> NSMutableArray {
? ? ? ?return self.listData
? ? ? ?}
? ? ? ?//修改備忘錄的方法
? ? ? ?func findById(model: Note) -> Note? {
? ? ? ?for note in self.listData {
? ? ? ?var note2 = note as Note
? ? ? ?//比較日期主鍵是否相等
? ? ? ?if note2.date == model.date {
? ? ? ?return note2
? ? ? ?}
? ? ? ?}
? ? ? ?return nil
? ? ? ?}
? ? ? ?}
? ? ? ?在上述代碼中,NoteDAO采用了單例設計模式,這種模式與DAO設計模式沒有關系,這是為了防止創建多個DAO對象。listData屬性用于保存數據表中的數據,其中每一個元素都是Note對象。數據放置在listData屬性中(百恒網絡溫馨提醒:這里本應該是從數據庫中取出的,但是數據庫訪問技術我們還沒有學習),CRUD方法也都是對listData而非數據庫的處理。
? ? ? ?在domain組中,Note的代碼如下,它只有兩個屬性——date是創建備忘錄的日期,content是備忘錄的內容:
? ? ? ?import Foundation
? ? ? ?class Note {
? ? ? ?var date:NSDate
? ? ? ?var content:NSString
? ? ? ?init(date:NSDate, content:NSString ) {
? ? ? ?self.date = date
? ? ? ?self.content = content
? ? ? ?}
? ? ? ?}
? ? ? ?在業務邏輯層BusinessLogicLayer中,類一般是按照業務模塊設計的,它的方法是業務處理方法。下面是NoteBL.swift中的代碼:
? ? ? ?import Foundation
? ? ? ?class NoteBL {
? ? ? ?//插入備忘錄的方法
? ? ? ?func createNote(model: Note) -> NSMutableArray {
? ? ? ?var dao:NoteDAO = NoteDAO.sharedInstance
? ? ? ?dao.create(model)
? ? ? ?return dao.findAll()
? ? ? ?}
? ? ? ?//刪除備忘錄的方法
? ? ? ?func remove(model: Note) -> NSMutableArray {
? ? ? ?var dao:NoteDAO = NoteDAO.sharedInstance
? ? ? ?dao.remove(model)
? ? ? ?return dao.findAll()
? ? ? ?}
? ? ? ?//查詢所有數據的方法
? ? ? ?func findAll() -> NSMutableArray {
? ? ? ?var dao:NoteDAO = NoteDAO.sharedInstance
? ? ? ?return dao.findAll()
? ? ? ?}
? ? ? ?}
? ? ? ?PresentationLayer是表示層,其中的內容大家應該比較熟悉了,這里就不在多講了,如果還想了解更多關于南昌APP開發方面的知識,歡迎來電咨詢百恒網絡,我們專業為您解答!