模板模式Ios下如何使用

                                              模板模式的使用        

视图和控制器以及app程序的加载,设计到生命周期的大概就是采用的这种模式

适用范围:某个业务具有固定的一套流程,但是允许有差异性的情况

以Person  每天的活动为列 醒来,睁开眼,洗漱,过完一天的生活,睡觉

发现必要的经历都是醒来,睁开眼,睡觉,洗漱但是每个人过完一天的生活却不一样,睡觉

那么有学生,有公务员,有老师,有农民,有要饭的,碰瓷的

class Person{

var  aname:String = "我"

init(){

self.mustdosomthing()

}

private  func  mustdosomthing(){

wakeup()

zhenyan()

if(cleantest()){

print("\(aname)今天洗漱了的,真是个乖孩子")

}

else{

print("\(self.aname)都不刷牙你太恶心了")

}

livelife()

gosleep()

print("");

}

private func  zhenyan(){

print("睁开眼");

}

private func  gosleep(){

print("我睡觉了");

}

private  func  wakeup(){

print("醒来");

}

func  cleantest()->Bool{

return  true;

}

func  livelife(){

}

}

var  per = Person()

class  student:Person{

override init(){

super.init()

}

override  func  livelife(){

print("\(aname)"+"当然是上一天学咯")

}

override  func  cleantest()->Bool{

return  false;

}

}

var  stu = student()


打印出来是这样的

醒来

睁开眼

人今天洗漱了的,真是个乖孩子

我睡觉了

醒来

睁开眼

学生都不刷牙你太恶心了

学生当然是上一天学咯

我睡觉了

采用这样的设计模式好处也体现了出来了,易于子类扩展,且不影响整个模板的整体流程和算法

关于模板模式在实际项目中如何使用你可以移驾查看在iOS上如何使用模板模式来用于统一管理自定义的异常处理.语言是oc版写的还包括aes+256轮转加密加密对部分字段加而非

https://gitee.com/cendainfo/ios-network.git

你可能感兴趣的:(模板模式Ios下如何使用)