I am no fan of B&D (in programming, in any case) so I see what you're saying. But here's what I'm wondering about - the responses I've seen here suggest:
- duck typing using can
- class checks using isa
For the former, I like that it is independent of the object's inheritance tree - but it doesn't always convey the same amount of information. For the latter, my point was that using
isa to check for interfaces rather than, say, the class with the implementation code would give you greater generality and abstraction. I'm not sure how that's B&D.