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)];
  • 相关阅读:
    管程|| 同步与互斥的实现策略
    sqlserver 用户定义表类型
    C# Post Get 方式发送请求
    linux centos Supervisor守护.netcore进程安装配置
    linux cenos开放端口
    SqlServer DbHelper
    C# 执行js
    sql 多行、一行 互转
    sql 删除完全表中完全重复的数据保留一条
    sql 行列互转
  • 原文地址:https://www.cnblogs.com/hissia/p/5433582.html
Copyright © 2011-2022 走看看