美文网首页
iOS 类簇(class cluster)

iOS 类簇(class cluster)

作者: c048e8b8e3d7 | 来源:发表于2016-10-14 16:04 被阅读48次

概括

类簇是一种设计模式(抽象工厂模式),它管理了一组隐藏在公共接口下的私有类。

详解

简单来说,我们调用的是父类抽象类,在抽象类里面会有诺干个私有子类,这些子类对于调用者来说是不公开的,然后会根据参数自动去实例化对应的子类。

下面看一个示例

NSMutableArray *array = [NSMutableArray new];
NSNumber *aInt = [NSNumber numberWithInt:1];
NSNumber *aBool = [NSNumber numberWithBool:YES];
NSString *aStr = @"xx";

在程序中设置一个断点,可以看到对应变量的类型,这几个变量的实际类型就是我们声明对象的私有子类


子类类型

应用

在应用程序中,有时候需要做多条件的判断,更有可能在项目的后期会增加更多的判断,这个时候我们就可以考虑使用类簇

1 定义一个抽象类和两个子类
@interface ClusterTest : NSObject

@end

@interface ClusterTestNew : ClusterTest

@end

@interface ClusterTestOld : ClusterTest

@end
2 把逻辑判断放到抽象类里面
@implementation ClusterTest

+ (instancetype)alloc
{
    if ([self class] == [ClusterTest class]) {
        //为了避免重复调用
        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) {
            return [ClusterTestNew alloc];
        } else {
            return [ClusterTestOld alloc];
        }
    }
    return [super alloc];
}

@end

@implementation ClusterTestNew

@end

@implementation ClusterTestOld

@end
3 使用
ClusterTest *test = [[ClusterTest alloc] init];

这样如果系统版本是10及以上,则testClusterTestNew,否则为ClusterTestOld对象

4 总结

这样有个好处就是在调用的地方显得很简洁,就算以后增加了判断条件,也不会有任何的影响

参考链接

参考一
参考二
参考三

相关文章

  • iOS类簇

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

  • iOS 类簇(class cluster)

    概括 类簇是一种设计模式(抽象工厂模式),它管理了一组隐藏在公共接口下的私有类。 详解 简单来说,我们调用的是父类...

  • 【iOS】类簇(class cluster)

    类簇实际上是Foundation framework框架下的一种设计模式,它管理了一组隐藏在公共接口下的私有类。 ...

  • 类簇(class cluster)

    类簇实际上是Foundation framework框架下的一种设计模式,它管理了一组隐藏在公共接口下的私有类。 ...

  • 类簇class cluster

    an architecture that groups a number of private, concrete...

  • 【iOS类簇】工厂设计模式(Class Cluster)

    摘要软件的设计模式如同高楼的设计蓝图,优秀巧妙应用设计模式可以使编码者更加轻松,软件的架构也会更加合理,这篇博客主...

  • iOS 中的类簇

    类簇的定义 类簇(Class Cluster)是定义相同的接口并提供相同功能的一组类的集合,仅公开接口的抽象类也...

  • iOS 类簇(class clusters)

    类簇(class clusters) 类簇是Foundation framework框架下广泛使用的一种设计模式。...

  • 从NSArray看类簇

    Class Clusters Class Clusters(类簇)是抽象工厂模式在iOS下的一种实现,众多常用类,...

  • Objective-C的类族模式

    简介 类族(class cluster)模式,可以隐藏其抽象基类(abstract base class)背后的实...

网友评论

      本文标题:iOS 类簇(class cluster)

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