百恒网络
IOS开发之采用纯Swift 语言实现——PSSS 模式
  • 百恒服务
  • APP开发
  • 网页案例
  • 网页知识
  • 关于我们
  • 联系我们
  • IOS开发之采用纯Swift 语言实现——PSSS 模式

    2017-06-06 14:32:41 3711
           纯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开发方面的知识,欢迎来电咨询百恒网络,我们专业为您解答!

    展开分享
    服务
    案例
    首页
    动态
    联系
    咨询