1.用統(tǒng)一的父類創(chuàng)建類接口穿件對(duì)象,具體實(shí)現(xiàn)都在各自子類。(UIButton NSArray 都是類簇模式)
// HuEmployee.h
#import <Foundation/Foundation.h>
typedef NS_ENUM(NSUInteger, HuEmployeeType){
HuEmployeeTypeDeveloper,
HuEmployeeTypeDesigner,
HuEmployeeTypeFinance,
};
@interface HuEmployee : NSObject
@property(nonatomic, copy)NSString *name;
@property(nonatomic, assign)NSUInteger salary;
//1.定義類方法,根據(jù)不同type,放回同一父類對(duì)象
+(HuEmployee*)employeeWithType:(HuEmployeeType)type;
-(void)doWork;
@end
// HuEmployee.m
#import "HuEmployee.h"
//3.定義各自子類
@interface HuEmployeeDeveloper : HuEmployee
@end
@implementation HuEmployeeDeveloper
-(void)doWork
{
[self writeCode];
}
-(void)writeCode
{
/////
}
@end
@interface HuEmployeeDesigner : HuEmployee
@end
@implementation HuEmployeeDesigner
-(void)doWork
{
[self desighApp];
}
-(void)desighApp
{
/////
}
@end
@interface HuEmployeeFinance : HuEmployee
@end
@implementation HuEmployeeFinance
-(void)doWork
{
[self manageFinance];
}
-(void)manageFinance
{
////
}
@end
@implementation HuEmployee
//2.抽象基類沒有特殊標(biāo)識(shí),一般不定義init方法 也不實(shí)現(xiàn)抽象函數(shù),各自在子類里實(shí)現(xiàn)
+(HuEmployee*)employeeWithType:(HuEmployeeType)type
{
switch (type) {
case HuEmployeeTypeDeveloper:
return [HuEmployeeDeveloper new];
break;
case HuEmployeeTypeDesigner:
return [HuEmployeeDesigner new];
break;
case HuEmployeeTypeFinance:
return [HuEmployeeFinance new];
break;
default:
break;
}
return nil;
}
-(void)doWork
{
//2.1拋出一個(gè)異常,避免在基類里面實(shí)現(xiàn)
NSException *e = [NSException
exceptionWithName: @"exceptionName"
reason: @"必須在子類實(shí)現(xiàn)改方法"
userInfo: nil];
@throw e;
}
@end
2.判斷莫類是否屬于是一個(gè)特定之類
@interface HuBusinessSupport : NSObject
@end
@implementation HuBusinessSupport
-(void)doSomeTest
{
HuEmployee *employee = [HuEmployee employeeWithType:HuEmployeeTypeDeveloper];
//4.判斷是否屬于某個(gè)子類
// //4.1不用要如下方法檢測(cè),一直成立
// if ([employee isMemberOfClass:[HuEmployee class]]){
// //一直為true
// }
//4.2用如下方法 直接用子類判斷
if([employee isKindOfClass:[HuEmployeeDeveloper class]])
{
//正確
}
}
@end
如果你發(fā)現(xiàn)本文對(duì)你有所幫助,如果你認(rèn)為其他人也可能受益,請(qǐng)把它分享出去。