模板模式
模板模式全称是模板方法设计模式,英文是Template Method Design Pattern。模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。
这里的算法,可以理解为广义上的业务逻辑,并不特指数据结构和算法中的算法。这里的算法骨架就是模板,包含算法骨架的方法就是模板方法,也是模板方法模式名字的由来。
示例
@interface DMTemplateMethod : NSObject
- (void)templateMethod;
@end
@implementation DMTemplateMethod
- (void)templateMethod
{
// ...
[self methodOne];
// ...
[self methodTwo];
// ...
}
- (void)methodOne
{
}
- (void)methodTwo
{
}
@end
@interface DMConcreteObject : DMTemplateMethod
@end
@implementation DMConcreteObject
- (void)methodOne
{
// 省略业务实现...
}
- (void)methodTwo
{
// 省略业务实现...
}
@end
@interface DMConcreteObjectTwo : DMTemplateMethod
@end
@implementation DMConcreteObjectTwo
- (void)methodOne
{
// 省略业务实现...
}
- (void)methodTwo
{
// 省略业务实现...
}
@end
模板模式作用一:复用
模板模式把一个算法中不变的流程抽象到父类的模板方法- (void)templateMethod中,将可变部分- (void)methodOne、- (void)methodTwo留给子类DMConcreteObject和DMConcreteObjectTwo来实现。所有的子类都可以复用父类中模板方法定义的流程代码。
模板模式作用二:扩展
这里所说的扩展,并不是指代码的扩展性,而是指框架的扩展性。基于这个作用,模板模式常用在框架的开发中,让框架用户可以在不修改框架源码的情况下,定制化框架的功能。
网友评论