哈喽,大家好,我是指北君。,本篇文章给大家介绍日常开发中比较常用的一种设计模式——模板模式。,Define the skeleton of an algorithm in an operation, deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure.,模板方法模式(Template Method Pattern):定义一个操作中的算法的框架, 而将一些步骤延迟到子类中。使得子类可以不改 变一个算法的结构即可重定义该算法的某些特定步骤。,说人话:父类模板方法定义不变的流程,子类重写流程中的方法。,
,①基本方法,上面的 baseOperation() 或者 customOperation() 方法,也叫基本操作,是由子类实现的方法,并且在模板方法中被调用。,基本方法尽量设计为protected类型, 符合迪米特法则, 不需要暴露的属性或方法尽量不要设置为protected类型。实现类若非必要, 尽量不要扩大父类中的访权限。,②模板方法,上面的 templateMethod() 方法,可以有一个或者几个,实现对基本方法的调度,完成固定的逻辑。,为了防止恶意操作,通常模板方法都加上 final 关键字,不允许覆写。,实现父类定义的一个或多个抽象方法,也就是父类定义的基本方法在子类中得以实现。,测试:,把认为是不变部分的算法封装到父类实现, 而可变部分的则可以通过继承来继续扩展。,基本方法是由子类实现的, 因此子类可以通过扩展的方式增加相应的功能, 符合开闭原则。,为了解决模板模式的缺点,我们可以利用回调函数代替子类继承。,
,测试:,Template是一个稳定的final类,无法被继承,不存在子类行为影响父类结果的问题,而Callback是一个接口,为了继承而继承的问题消失了。
© 版权声明
文章版权归作者所有,未经允许请勿转载。