我有一个方法
-(NSData*)getCommonDataWithCommandID:(int)commandID withChannelNumber:(int)channelNo withDataArray:(NSArray*)dataArray withByteArraySize:(int)byteArraySize
{
}
这是从很多地方调用的,并且具有很大的调用层次结构。如何从dimSliderDecreasedTapped:
或tapOnFifthChannel:
传递价值这只是一部分!
现在我需要为此方法添加另一个参数
bool isFeedbackExpected
但这会是紫色Open Closed Principle。
最好的方法是什么?
答案 0 :(得分:2)
使用该参数添加另一个方法:
- (NSData*)getCommonDataWithCommandID:(int)commandID
withChannelNumber:(int)channelNo
withDataArray:(NSArray*)dataArray
withByteArraySize:(int)byteArraySize
feedbackExpected:(BOOL)feedbackExpected {
...
}
并从原始方法中调用此方法
- (NSData*)getCommonDataWithCommandID:(int)commandID
withChannelNumber:(int)channelNo
withDataArray:(NSArray*)dataArray
withByteArraySize:(int)byteArraySize {
return [self getCommonDataWithCommandID:commandID
withChannelNumber:channelNo
withDataArray:dataArray
withByteArraySize:byteArraySize
feedbackExpected:NO];
}
这将扩展功能,但它将保留旧接口。在Swift中,这可能更简单,因为您可以添加可选参数(具有默认值的参数)。
答案 1 :(得分:0)
有两种方法,第一种方法是在现有方法中添加参数,您必须更改使用该方法的每个位置(调用)。第二个是,使用该额外参数创建另一个方法,并在需要时调用此新方法,这样您就不需要更改项目中的其他内容