纯Swift语言实现的分层架构如图1所示,MyNotes工程,如图2所示。在Xcode工程导航面板中,共有3个组——PresentationLayer、BusinessLogicLayer和PersistenceLayer,其中PresentationLayer用于放置
表示层相关的类,BusinessLogicLayer用于放置业务逻辑层相关的类,PersistenceLayer用于放置持久层相关的类。
在各个层下面,又是如何划分的呢?江西网络公司-易速网络建议大家可以按照业务模块划分,也可以按照组件功能划分。在本应用中,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开发方面的知识,欢迎来电咨询易速网络,我们专业为您解答!
易速网站优化公司 » IOS开发之采用纯Swift 语言实现——PSSS 模式