OC语言day04-14类工厂方法基本概念

pragma mark 类工厂方法基本概念

pragma mark 概念

/**
 *  自定义工厂方法
 什么是工厂方法(快速创建方法)
  类公共方法 是一种 用于分配、初始化实例 并返回一个它自己的实例的类方法, \
  类工厂方法很方便,因为他们允许您只使用一个步骤(而不是两个步骤) 就能创建对象,例如new
 */

pragma mark 代码

#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#pragma mark main函数
int main(int argc, const char * argv[])
{
//    Person *p = [[Person alloc]init];
//    Person *p1 = [Person person];
    Person *p1 = [Person personWithAge:40];
    NSLog(@"age = %i",p1.age);
    /*
     自定义类工厂方法 是 苹果的一个规范, \
     一般情况下, 我们会给一个类 提供自定义构造方法 和 自定义类工厂方法 用于创建一个对象
     */
#warning 苹果系统的 构造方法(对象方法) 和 类工厂方法(类方法) --- NSString
    [[NSString alloc]init];
    [NSString string];
    [[NSString alloc]initWithString:@"1"];
    [NSString stringWithString:@"2"];
    
    // 数组 NSArray
    [[NSArray alloc]init];
    [NSArray array];
    [NSArray alloc]initWithObjects:@"1", nil];
    [NSArray arrayWithObjects:@"2", nil];
    return 0;
}

Person.h //人类
#import <Foundation/Foundation.h>

@interface Person : NSObject

@property int age;

#warning 什么是类工厂方法
/*
 什么是类工厂方法:
 用于 快速创建 对象的方法, 我们称之为工厂方法
 类工厂方法中 主要用于 给对象分配存储空间和初始化
 
 规范:
 1. 一定是类方法
 2. 方法名称以类名开头, 首字母小写
 3. 一定有返回值, 返回值是 id / instancetype
 */

+ (instancetype)person;

#warning 类工厂方法带参数
+ (instancetype)personWithAge:(int)age;
@end
Person.m
#import "Person.h"

@implementation Person

#warning 类工厂方法
/*
+ (instancetype)person
{
    // 1. 分配存储空间
    // 2. 初始化
    // 3. 返回对象
    Person *p = [Person alloc];
    Person *p1 = [p init];
    p1.age  = 30;
    NSLog(@"age = %i",p1.age);
    return p1;
}
 */

#warning 类工厂方法 简化
+ (instancetype)person
{
    return [[Person alloc]init];
}

#warning 类工厂方法带参数
+ (instancetype)personWithAge:(int)age
{
    Person *p = [[Person alloc]init];
    p.age = age;
    return p;
}
@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容