模拟工厂方法
2016-04-09 10:33
351 查看
使用属性、初始化方法(无参、有参)、工厂方法(无参、有参)的概念重构Student类,在类中包含以下实例变量int age、char gender、double salary信息,定义一个方法printInfo输出所有实例变量的值,在主函数中对Student类的对象进行赋值并输出。
// // Student.h // Oc-Day1 // // Created by spare on 16/4/9. // Copyright © 2016年 spare. All rights reserved. // #import <Foundation/Foundation.h> @interface Student : NSObject @property int age; @property char gender; @property double salary; //在Student类中添加两个方法,一个是无参初始化方法,另一个是有参初始化方法。 -(id)init; -(id)initWithAge:(int)age andGender:(char)gender andSalary:(double)salary; //用于对工厂方法的声明,需要注意的是工厂方法以加号“+”开头,而实例方法则以减号“-”开头。 //工厂方法本质上是类的静态方法,其调用是通过类名直接调用的,与实例方法不同,实例方法是通过对象来调用的。 +(id)creat; +(id)creatWithAge:(int)age andGender:(char)gender andSalary:(double)salary; -(void) printInfo; @end
// // Student.m // Oc-Day1 // // Created by spare on 16/4/9. // Copyright © 2016年 spare. All rights reserved. // #import "Student.h" @implementation Student -(id)init{ //是首先发消息[super init]调用基类中的init方法获得self值 if(self=[super init]){ _age=33; _gender='M'; _salary=20000; } return self; } -(id)initWithAge:(int)age andGender:(char)gender andSalary:(double)salary{ if (self=[super init]) { _age=age; _salary=salary; _gender=gender; } return self; } +(id)creat{ Student *stu=[[Student alloc]init]; return stu; } +(id)creatWithAge:(int)age andGender:(char)gender andSalary:(double)salary{ Student *stu=[[Student alloc]initWithAge:age andGender:gender andSalary:salary]; return stu; } -(void)printInfo{ NSLog(@"age=%d,gender=%c,salary=%lf",_age,_gender,_salary); } @end
// // main.m // Oc-Day1 // // Created by spare on 16/4/9. // Copyright © 2016年 spare. All rights reserved. // #import <Foundation/Foundation.h> #import "Student.h" int main(int argc, const char * argv[]) { @autoreleasepool { Student *stu=[[Student alloc]init]; [stu printInfo]; Student *stu1=[[Student alloc]initWithAge:20 andGender:'M' andSalary:3000]; [stu1 printInfo]; Student *stu2=[[Student alloc]initWithAge:30 andGender:'M' andSalary:20000]; [stu2 printInfo]; } return 0; }
相关文章推荐
- 适配器模式
- tomcat目录
- 用Qt开发Web和本地混合的应用
- 一滴水推醒了英雄的春天
- Git打包文件
- java IO
- NYOJ--1237最大岛屿
- Qt单元测试框架
- 单片机 计数/定时 中断实验
- synchronized关键字详解
- Fouandation(NSString ,NSArray,NSDictionary,NSSet) 中常见的理解错误区
- POI介绍
- linux下串口编程中结构体termios的参数标注
- String StringBuffer StringBuilder
- django-其他(内容多了再做分类)
- JS字符串替换函数全部替换方法
- 如何快速开发一个支持高效、高并发的分布式ID生成器(一)
- 7——Refactoring a Monolith into Microservices
- codeforces 660D. Number of Parallelograms
- redis参数优化