Objective-c里氏对换原则与开闭原则

Objective-c中的开闭原则和里氏代换原则:

开闭原则是面向对象设计中“可复用设计”的基石,是面向对象设计中最重要的原则之一,其它很多的设计原则都是实现开闭原则的一种手段。开闭原则的核心是:对扩展开放,对修改关闭。白话意思就是我们改变一个软件时(比如扩展其他功能),应该通过扩展的方式来达到软件的改变,而不应该修改原有的代码来实现变化。
里氏代换原则是面向对象设计的基本原则之一。里氏代换原则中说,任何基类可以出现的地方,子类一定可以实现。LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
附上多态调用的例子:

 #import <Foundation/Foundation.h>

@interface Animal : NSObject
-(void)eat;
@end
#import “Animal.h”

@implementation Animal
- (void)eat{
NSLog(@”动物吃东西了!”);

}
@end

#import "Animal.h"

@interface Cat : Animal

@end

#import “Cat.h”

@implementation Cat
- (void)eat{
[super eat];
NSLog(@”猫吃鱼!”);
}

@end

#import “Animal.h”

@interface Dog : Animal

@end

#import “Dog.h”
@implementation Dog
- (void)eat{
[super eat];
NSLog(@”狗吃肉!”);
}
@end
//不知为何框架头文件无法导入。

#import “Animal.h”
@interface Student : NSObject
@property (retain,nonatomic)NSString *name;
@property (assign,nonatomic)NSInteger age;
- (void)feed:(Animal *)animal;//喂养动物的方法;

@end

#import “Student.h”
@implementation Student
- (void)setName:(NSString *)name{
_name = name;
NSLog(@”his name is %@;”,_name);
}

-(void)setAge:(NSInteger)age{
if (age <= 18) {
_age = 18;
}else _age = 22;
NSLog(@”his age is %ld;”,_age);
}
- (void)feed:(Animal *)animal{
NSLog(@”学生喂动物了!”);
[animal eat];
}
@end
//不知为何框架头文件无法导入。
#import “Student.h”
//#import “Animal.h”
#import “Dog.h”
#import “Cat.h”

int main(int argc, const char * argv[]) {
@autoreleasepool {
Student *stu = [Student new];
[stu setAge:12];
[stu setName:@”fadykeane”];
Animal *d = [Dog new];
Animal *c = [Cat new];
[stu feed:d];
[stu feed:c];
}
return 0;
}
运行结果:
2015-07-29 10:04:45.996 里氏替换原则[637:20308] his age is 18;
2015-07-29 10:04:45.997 里氏替换原则[637:20308] his name is fadykeane;
2015-07-29 10:04:45.998 里氏替换原则[637:20308] 学生喂动物了!
2015-07-29 10:04:45.998 里氏替换原则[637:20308] 动物吃东西了!
2015-07-29 10:04:45.998 里氏替换原则[637:20308] 狗吃肉!
2015-07-29 10:04:45.998 里氏替换原则[637:20308] 学生喂动物了!
2015-07-29 10:04:45.998 里氏替换原则[637:20308] 动物吃东西了!
2015-07-29 10:04:45.998 里氏替换原则[637:20308] 猫吃鱼!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值