iOS设计模式之模版模式

61 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情


设计模式相信大家都很熟悉了,但是越是基础的东西也越是需要经常的回顾与思考,于是着手写一个温故而知新的设计模式回顾系列。
在 8 月,准备把各个常用的不常用的设计模式都进行一次回顾,并大概聊一下各个模式的特点与在 iOS 中的大概使用场景与情况。

这里是设计模式回顾的第十六篇,模板模式的相关回顾。

模版模式

1、什么是模版模式

模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

模版模式只是定义框架,只做定义不做实现,是对子类方法做一个规范。再其他语言中,尽量做抽象类,而在 iOS 中,可以用协议来定义框架,声明基本的方法。

2、模版模式用在什么地方

  • 相同的算法放在一个类中(父类)将算法变化的部分放在子类中。父类定义方法,子类实现方法。
  • 子类公共的算法放在一个公共类中,避免代码重复。父类定义并实现方法,子类调用。

我偶尔也会在工程中会设置基础模版,用来设定基础框架。

3、模版模式的使用

  1. 创建模版类,定义模版协议,模版类引用模版方法
  2. 子类继承模版类,实现模版协议中的方法

4、总结

模版模式属于最基础的设计模式,主要的思想是将公共方法提取到父类。并且通过父类定义子类的框架。

5、demo

/// 模版类
#import <UIKit/UIKit.h>

@protocol BaseViewProtocol <NSObject>

@optional
/**
 创建视图
 */
- (void)createUI;

/**
 设置视图尺寸等
 */
- (void)placeSubviews;

/**
 增加监听
 */
- (void)addListener;

@end
/**
 基础视图
 */
@interface BaseView : UIView <BaseViewProtocol>

@end