zoukankan      html  css  js  c++  java
  • 八:类工厂方法

    一:基本用法

    类工厂方法作用:提高编码效率,快速创建对象的方法

    规范:1、一定是+开头

         2、方法以类名开头,首字母小写。

       3、一定有返回值,返回类型为id/instancetype

    比如:在类的声明和实现中

    无参数:

    @interface Person : NSObject
    
    + (instancetype)person;
    
    @end
    @implementation
    
    + (instancetype)person{
        return [[Person alloc] init];
    }
    
    @end

    在主函数创建对象中就可以直接使用,简化代码。

    Person *p1 = [Person person];  //此处的Person person的作用相当于Person new

    有参数:

    @interface Person : NSObject
    
    @property int age;
    + (instancetype)personWithAge:(int)age;
    
    @end
    @implementation
    
    + (instancetype)personWithAge:(int)age
    {
        Person *p = [[self alloc] init];  //此处的self不要使用Person
        p.age = age;
        return p;
    }
    
    @end

    在主函数中就可以直接创建对象使用

    Person *p2 = [Person personWithAge:10];

    二、扩展

    给一个类提供自定义构造方法和自定义工厂方法,都是用于快速创建一个对象(初始化对象),本身苹果底层的使用规则也是如此,例如:

    1 NSString *p = [[NSString alloc] init];
    2 NSString *p = [NSString string];
    3 NSString *p1 = [[NSString alloc] initWithString:(nonnull NSString *)];
    4 NSString *p1 = [NSString stringWithString:(nonnull NSString *)];
    5     
    6 NSArray *a = [[NSArray alloc] init];
    7 NSArray *a = [NSArray array];
    8 NSArray *a1 = [[NSArray alloc] initWithObject:(nonnull id)];
    9 NSArray *a1 = [NSArray arrayWithObject:(nonnull id)];
  • 相关阅读:
    J Identical Trees(求俩个树转化所需的最小代价,hash判同构,费用流求转移代价)
    I Tournament(俩人一组,构造最少排队总时间)
    D
    purfer序列(有关度数与生成树个数情况)
    博客园自定义样式
    莫比乌斯知识点整理
    随笔日记
    牛客小白月赛16
    Codeforces Round #555 (Div. 3)
    Codeforces Round #553 (Div. 2)
  • 原文地址:https://www.cnblogs.com/hissia/p/5433582.html
Copyright © 2011-2022 走看看