iOS开发设计模式之类簇模式

作者: PandaXiong | 来源:发表于2016-06-06 16:24 被阅读343次

类簇是objective-C系统框架普遍使用的模式,可以隐藏抽象基类背后的实现细节。比如创建按钮时调用的

+ (instancetype)buttonWithType:(UIButtonType)buttonType;

这个方法创建的对象的类型取决于传入的按钮类型buttonType。返回的对象都继承于同一个基类UIButton
当各个子类在外部表现相同,内部实现不同时,我们就可以使用类簇模式去实现它。这样做我们无需使用对应的子类,只需要使用基类即可。

创建类簇

举个例子,我们要写个刷新控件,实现下拉刷新,上拉加载功能。
定义抽象基类

typedef enum {
    RefreshStateBeginRefreshing,//开始刷新
    RefreshStateEndRefreshing//结束刷新
    
} RefreshState;

/**
 控件类型
 */
typedef enum {
    RefreshHeaderType,
    RefreshFooterType
} RefreshViewType;

@interface XZHRefreshView : UIView

- (void)addRefreshTarget:(id)target action:(SEL)action forRefreshState:(RefreshState)state;

+ (XZHRefreshView *)refreshViewWithType:(RefreshViewType)type;

@end


@implementation XZHRefreshView

+ (XZHRefreshView *)refreshViewWithType:(RefreshViewType)type {
    if (type == RefreshHeaderType) {
        return [XZHRefreshHeaderView header];
    } else if (type == RefreshFooterType) {
        return [XZHRefreshFooterView footer];
    } else {
        return nil;
    }
}
- (void)addRefreshTarget:(id)target action:(SEL)action forRefreshState:(RefreshState)state {
    //子类实现
}
@end

每个实体子类,都是继承于基类:

@interface XZHRefreshHeaderView : XZHRefreshView

@end

@implementation XZHRefreshView

- (void)addRefreshTarget:(id)target action:(SEL)action forRefreshState:(RefreshState)state {
    //code
}
@end

OC语言不能指出哪个基类是『抽象的』。开发者需要在文档中写明类的用法。基类没有init方法,不应该由使用者直接创建。

注意事项

1.所有子类应该继承类簇的抽象基类
2.子类应该覆写父类需要覆写的方法。
3.使用类簇时要完善开发文档,避免团队成员错误使用。

相关文章

  • iOS开发设计模式之类簇模式

    类簇是objective-C系统框架普遍使用的模式,可以隐藏抽象基类背后的实现细节。比如创建按钮时调用的 这个方法...

  • iOS开发设计模式之类簇

    本文试图探讨以下三个问题 什么是类簇 使用类簇有什么好处 类簇的具体应用 1. 什么是类簇 类簇的英文名是clas...

  • iOS开发:设计模式那点事

    iOS开发:设计模式那点事 iOS开发:设计模式那点事

  • 设计模式之类簇Class Clusters

    此设计模式是基于抽象工厂模式实现的,在OC的Foundation框架中有很多应用。 抽象基类封装了多个具体子类的实...

  • 设计模式

    设计模式: 类簇 在iOS的Foundation框架中,类簇是一种常用的设计模式,将一些相近的,私有的,具体的子类...

  • iOS类簇

    IOS 类簇 类簇(class cluster)是一种设计模式,在Foundation Framework中被广泛...

  • iOS设计模式(3)适配器模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(4)抽象工...

  • iOS设计模式之美-适配器模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

  • iOS设计模式之美-抽象工厂模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

  • iOS设计模式之美-工厂模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

网友评论

    本文标题:iOS开发设计模式之类簇模式

    本文链接:https://www.haomeiwen.com/subject/cfvqdttx.html