Open Close Principle(开闭原则):
定义:
对使用者修改关闭,对提供者扩展开放。
更通俗的意思:提供者增加新功能使用者不需要修改代码,也就是增加新代码老代码无需改动。
适用范围:
最初设计对类提出的设计原则。但其思想适用范围很广系统和系统,子系统和子系统、模块与模块之间都可应用。
Objective-C 例子:
// 使用
- (void)niceIdea {
OCPMother *mother = [OCPMother new];
[mother narrate:[OCPBook new]];
[mother narrate:[OCPNewspaper new]];
}
妈妈讲故事:
@interface OCPMother : NSObject
- (void)narrate:(id<OCPReader>)reader;
@end
@implementation OCPMother
- (void)narrate:(id<OCPReader>)reader {
NSLog(@"Ready reading...");
NSLog(@"%@",[reader content]);
}
@end
阅读协议:
@protocol OCPReader <NSObject>
- (NSString *)content;
@end
获取书内容:
@interface OCPBook : NSObject <OCPReader>
@end
@implementation OCPBook
- (NSString *)content { return @"Read story book...";}
@end
获取报纸内容:
@interface OCPNewspaper : NSObject <OCPReader>
@end
@implementation OCPNewspaper
- (NSString *)content { return @"Read newspaper....";}
@end