【发布时间】:2011-04-22 03:57:39
【问题描述】:
我有一个数据模型,其中包含大量异构项目(数组)。只有 2-3 种不同的项目,每种都继承自一个基类。使用经典示例,假设基类为Vehicle,子类为Car、Train 和Plane。
我有一个更大的拥有模型/控制器,它想要在这个有序的车辆列表上进行操作,虽然一些操作是共享的(并且在基类中并在子类中被覆盖),但许多操作是特定于只有其中一种物品。
所以我最终得到了很多看起来像这样的代码:
for (Vehicle * vehicle in vehicles) {
if (![vehicle isKindOfClass:[Car class]]) {
continue;
}
Car * car = (Car *)vehicle;
// Do stuff only with "car".
}
所以我到处都有很多-isKindOfClass:,并且很多将基类转换为子类。当然,这一切都有效,但似乎有足够多的“代码味道”让我认为可能有一种更优雅的方式来编写此代码或设计我的对象模型。
想法?谢谢。
【问题讨论】:
标签: objective-c cocoa coding-style polymorphism