OC-008.OC中的依赖关系和关联关系

这篇博客探讨了Objective-C中的依赖关系和关联关系,通过耦合度的概念进行解释。低耦合意味着修改一个对象对其他对象影响小,而高耦合则相反。作者引用了单一职责原则,并用男人与女人的例子来说明:依赖关系如同小三,是临时性的,如局部变量或方法参数;关联关系(HasA)如同原配,是长期的拥有关系,如成员变量。
摘要由CSDN通过智能技术生成

OC里面的依赖关系和关联关系,确实挺难搞清楚,我自己看了好多遍的视频,又看了别人的博客。个人总结了一些区分它们的方法


首先先介绍一下耦合度这个词:

 耦合度:当修改一个对象的时候,对另外一个对象的影响程度。

低耦合: 当修改一个对象的对其他对象影响比较小

高耦合: 当修改一个对象的对其他对象影响比较大

面向对象设计原则:单一职责原则(就是一个对象仅干自己相关的事情==高内聚)


举个男人和女人的例子来分析依赖关系和关联关系:小三与原配的关系

依赖关系A对象作为B对象的局部变量或是方法形参的,B依赖与A,这时候我们称AB之间存在一种依赖关系。依赖关系的耦合度比较低

(男人需要去外面找个女人,然后再和女人做相应的事情)小三的关系


#import "Man.h" //导入man  里面已经导入过women了所以没有必要重复导入,多写一行很累------------main文件
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Man *man = [[Man alloc] init]; //创建一个男人
        Women *women = [[Women alloc] init];//创建一个小三
        [man kissWomen:women];//调用了亲女人的方法,传入一个小三。这边就是一种依赖关系
    }
    return 0;
}
#import <Foundation/Foundation.h>//-----------------------------Women.h文件   

@interface Women : NSObject

- (void) say; //女人有一个say的方法

@end
#import "Women.h"//-----------------------Women.m文件

@implementation Women

- (void) say{
    NSLog(@"女人说:哎呦,你好坏!");
}
@end
#import <Foundation/Foundation.h>//-----------------------------man.h文件

#import "Women.h"
@interface Man : NSObject

- (void) kissWomen:(Women *) women;//亲女人的方法,需要传入一个女人作为形参,这就是依赖关系。说明Man依赖Women

@end
#import "Man.h"//-----------------------------man.m文件

@implementation Man

- (void) kissWomen:(Women *) women{
    NSLog(@"男人亲了女人");
    [women say];//这里调用女人的say方法
}
@end

关联关系,HasA关系A对象为B对象的成员变量的时候,是一种拥有的关系,A拥有了B,这样 A对象与B对象之间存在一种关联关系。耦合度高于依赖关系。

(男人把女的给娶了,男人拥有了女人,然后做相应的事情)原配的关系


#import "Man.h"//------------------------man.m文件
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Man *man = [[Man alloc] init]; //创建一个男人
        Women *women = [[Women alloc] init];//创建一个女人
        [man setWomen:women];//让这个男人讨个老婆
        [man kissWomen];//亲老婆
    }
    return 0;


#import <Foundation/Foundation.h>//-----------------------------Women.h文件   

@interface Women : NSObject

- (void) say; //女人有一个say的方法

@end
#import "Women.h"//-----------------------------Women.m文件

@implementation Women

- (void) say{
    NSLog(@"女人说:哎呦,你好坏!");
}
@end
#import <Foundation/Foundation.h>//-----------------------------man.h文件
#import "Women.h"  //导入女人
@interface Man : NSObject
{
    Women *_women; //现在让这个男人拥有一个女人
  }

- (void) setWomen:(Women *)women;//想办法讨个老婆

//- (void) kissWomen:(Women *) women; 原来的依赖关系是需要传入一个女人的参数
//亲女人的方法,需要传入一个女人作为形参,这就是依赖关系。说明Man依赖Women

- (void) kissWomen;//现在有老婆了就直接亲,不需要外面找了

@end
#import "Man.h"//-----------------------------man.m文件
@implementation Man
- (void) setWomen:(Women *)women{
    _women = women;
}

- (void) kissWomen{
    NSLog(@"男人亲了女人");
    [_women say];
}
@end










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值