十年专注于网站建设与互联网应用开发,低调、高逼格、有情怀的网络应用服务商!
南昌百恒网络微信公众号 扫一扫关注
tel-icon全国服务热线:400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号

IOS开发之采用纯Swift 语言实现——PSSS 模式

百恒 2017-06-06 14:32:41 694 读取中.
       纯Swift语言实现的分层架构如图1所示,MyNotes工程,如图2所示。在Xcode工程导航面板中,共有3个组——PresentationLayer、BusinessLogicLayer和PersistenceLayer,其中PresentationLayer用于放置表示层相关的类,BusinessLogicLayer用于放置业务逻辑层相关的类,PersistenceLayer用于放置持久层相关的类。
       在各个层下面,又是如何划分的呢?江西网络公司-百恒网络建议大家可以按照业务模块划分,也可以按照组件功能划分。在本应用中,PersistenceLayer层还要分成dao和domain两个组。dao用于放置数据访问对象,该对象中有访问数据的CRUD四类方法。为了降低耦合度,dao一般要设计成为协议(或Java接口),然后根据不同的数据来源采用不同的实现方式。domain组是实体类,实体是应用中的“人”、“事”、“物”等。

南昌APP开发

      在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开发方面的知识,欢迎来电咨询百恒网络,我们专业为您解答!

加载评论中..
400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号

欢迎您的光顾,我们将竭诚为您服务×

售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售后服务 售后服务
 
备案专线 备案专线
 
售后服务 售后服务
 
×