? ? ? ?在各個層下面,又是如何劃分的呢?江西網(wǎng)絡公司-百恒網(wǎng)絡建議大家可以按照業(yè)務模塊劃分,也可以按照組件功能劃分。在本應用中,PersistenceLayer層還要分成dao和domain兩個組。dao用于放置數(shù)據(jù)訪問對象,該對象中有訪問數(shù)據(jù)的CRUD四類方法。為了降低耦合度,dao一般要設計成為協(xié)議(或Java接口),然后根據(jù)不同的數(shù)據(jù)來源采用不同的實現(xiàn)方式。domain組是實體類,實體是應用中的“人”、“事”、“物”等。
? ? ??在dao組中,NoteDAO.swift中的代碼如下:
? ? ? ?import Foundation
? ? ? ?class NoteDAO {
? ? ? ?//保存數(shù)據(jù)列表
? ? ? ?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()
? ? ? ?//添加一些測試數(shù)據(jù)
? ? ? ?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
? ? ? ?}
? ? ? ?//查詢所有數(shù)據(jù)方法
? ? ? ?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設計模式?jīng)]有關系,這是為了防止創(chuàng)建多個DAO對象。listData屬性用于保存數(shù)據(jù)表中的數(shù)據(jù),其中每一個元素都是Note對象。數(shù)據(jù)放置在listData屬性中(百恒網(wǎng)絡溫馨提醒:這里本應該是從數(shù)據(jù)庫中取出的,但是數(shù)據(jù)庫訪問技術我們還沒有學習),CRUD方法也都是對listData而非數(shù)據(jù)庫的處理。
? ? ? ?在domain組中,Note的代碼如下,它只有兩個屬性——date是創(chuàng)建備忘錄的日期,content是備忘錄的內容:
? ? ? ?import Foundation
? ? ? ?class Note {
? ? ? ?var date:NSDate
? ? ? ?var content:NSString
? ? ? ?init(date:NSDate, content:NSString ) {
? ? ? ?self.date = date
? ? ? ?self.content = content
? ? ? ?}
? ? ? ?}
? ? ? ?在業(yè)務邏輯層BusinessLogicLayer中,類一般是按照業(yè)務模塊設計的,它的方法是業(yè)務處理方法。下面是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()
? ? ? ?}
? ? ? ?//查詢所有數(shù)據(jù)的方法
? ? ? ?func findAll() -> NSMutableArray {
? ? ? ?var dao:NoteDAO = NoteDAO.sharedInstance
? ? ? ?return dao.findAll()
? ? ? ?}
? ? ? ?}
? ? ? ?PresentationLayer是表示層,其中的內容大家應該比較熟悉了,這里就不在多講了,如果還想了解更多關于南昌APP開發(fā)方面的知識,歡迎來電咨詢百恒網(wǎng)絡,我們專業(yè)為您解答!