cfi*_*her 4 cocoa abstract-class protocols
我不确定是否应该创建一个抽象类和一系列继承此抽象类的后代,或者定义一个协议.Cocoa的最佳做法是什么?
这取决于.
抽象类+后代模式在Cocoa术语中称为类集群.众所周知的例子是NSString和NSArray.这种方法的主要优点是您可以在基类上实现方法,这些方法根据一组核心方法工作并且是继承的; 例如,一个子类NSString只需要实现-length并且-characterAtIndex:所有公共NSString实例方法都可以工作(虽然效率不高).
这种模式的缺点是实现必须从基类继承,这可能是单继承语言的严重限制.
另一方面,协议可以被任何类采用,但不能提供基本实现.这很像是鸭子打字的静态检查版本; 通过采用您声称可以嘎嘎叫的协议,并且通过要求协议,您可以将参数限制为具有quack功能的类,而无需特定的基类.
如果您计划为抽象提供一组标准实现,则可能需要类集群.如果要与实现抽象的开放对象集进行通信,则可能需要协议.
| 归档时间: |
|
| 查看次数: |
1465 次 |
| 最近记录: |