// // Work.swift // 23设计模式 // // Created by 阳君 on 14/11/27. // Copyright (c) 2014年 六月. All rights reserved. // import Foundation /// Work定义工厂方法所创建的对象的接口。 protocol Work { func doWork() }
a) StudentWork.swift
// // StudentWork.swift // 23设计模式 // // Created by 阳君 on 14/11/27. // Copyright (c) 2014年 六月. All rights reserved. // import Foundation /// StudentWork实现Work接口。 class StudentWork : Work { func doWork() { print("阳学生做作业!") } }
b) TeacherWork.swift
// // TeacherWork.swift // 23设计模式 // // Created by 阳君 on 14/11/27. // Copyright (c) 2014年 六月. All rights reserved. // import Foundation /// TeacherWork实现Work接口。 class TeacherWork : Work { func doWork() { print("王老师审批作业!") } }
IWorkFactory.swift
// // IWorkFactory.swift // 23设计模式 // // Created by 阳君 on 14/11/27. // Copyright (c) 2014年 六月. All rights reserved. // import Foundation /// IWorkFactory 声明工厂方法,该方法返回一个Work类型的对象。IWorkFactory也可以定义一个工厂方法的缺省实现,它返回一个缺省的TeacherWork对象。可以调用工厂方法以创建一个Work对象。 protocol IWorkFactory { func getWork() ->Work }
a) StudentWorkFactory.swift
// // StudentWorkFactory.swift // 23设计模式 // // Created by 阳君 on 14/11/27. // Copyright (c) 2014年 六月. All rights reserved. // import Foundation /// 重定义工厂方法以返回一个TeacherWork实例。 class StudentWorkFactory : IWorkFactory { func getWork() ->Work { return StudentWork() } }
b) TeacherWorkFactory.swift
// // TeacherWorkFactory.swift // 23设计模式 // // Created by 阳君 on 14/11/27. // Copyright (c) 2014年 六月. All rights reserved. // import Foundation /// 重定义工厂方法以返回一个TeacherWork实例。 class TeacherWorkFactory : IWorkFactory { func getWork() ->Work { return TeacherWork() } }
// 工厂方法 let studentWorkFactory:IWorkFactory = StudentWorkFactory() studentWorkFactory.getWork().doWork() let teacherWorkFactory:IWorkFactory = TeacherWorkFactory() teacherWorkFactory.getWork().doWork()
阳学生做作业!
王老师审批作业!