
移动端访问不佳,请访问我的个人博客@H_301_2@
模板方法模式设计模式学习的demo地址,欢迎大家学习交流@H_301_2@
模板方法模式,定义一个 *** 作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。@H_301_2@ 模板方法模式的基本实现
上图是基本模板模式的UML图,这种设计模式在很多地方都有用到,下面是基本实现的代码:@H_301_2@
class AbstractClass { func primitiveOperation1() {} func primitiveOperation2() {} func templateMethod() { primitiveOperation1() primitiveOperation2() }}class ConcreteClassA: AbstractClass { overrIDe func primitiveOperation1() { print("具体类A方法1实现") } overrIDe func primitiveOperation2() { print("具体类A方法2实现") }}class ConcreteClassB: AbstractClass { overrIDe func primitiveOperation1() { print("具体类B方法1实现") } overrIDe func primitiveOperation2() { print("具体类B方法2实现") }} 模板方法模式解决实际问题(填表格) 在生活中很多地方用到的模板方法模式,比如我们填一份表格,我们要按照表格的模板开始填,只需要填关键部分,而不用将表格的所有文字炒一遍,下面是UML和代码:@H_301_2@
// 表格的模板class Templatetable { func showtable() { fillname() fillSex() } func fillname() { print("你的名字:\(yourname())") } func fillSex() { print("你的性别:\(yourSex())") } func yourname() -> String { return "" } func yourSex() -> String { return "" }}// wcl填写的表格class WCLtable: Templatetable { overrIDe func yourname() -> String { return "wcl" } overrIDe func yourSex() -> String { return "male" }}// scy填写的表格class SCYtable: Templatetable { overrIDe func yourname() -> String { return "scy" } overrIDe func yourSex() -> String { return "female" }}
下面我们调用一下代码:@H_301_2@
let wcl = WCLtable()wcl.showtable()let scy = SCYtable()scy.showtable()
下面是调用的结果:@H_301_2@
你的名字:wcl你的性别:male你的名字:scy你的性别:female模板方法模式的特点
模板方法模式是通过把不变行为搬移到超类,去除子类中重复代码来体现它的优势,它提供了一个很好的代码复用平台。@H_301_2@
总结以上是我对模板方法模式的理解,如果有不对的地方欢迎大家交流,最后谢谢大家的阅读~~@H_301_2@
以上是内存溢出为你收集整理的swift设计模式学习 - 模板方法模式全部内容,希望文章能够帮你解决swift设计模式学习 - 模板方法模式所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)