Choosing between the lesser of two evils — bad design?

I have two classes, Bar and Baz. Both subclass the abstract class Foo which has a method doThing(). Bar implements a functional interface Now which contains method doThingNow() whereas Baz implements a functional interface Later which contains method doThingLater(). It’s likely that I will have more classes down the line that subclass Foo but I expect all of them to either implement Now or Later. I’m debating between two potential designs but I’m hoping somebody can help me understand why one might be preferable to the other.

Design 1: I make doThing() abstract and force every subclass to implement it. The implementation for each class will simply call the interface method.

Design 2: I implement doThing as follows:

public void doThing() {     if (this instanceof Now) {         ((Now) this).doThingNow();     } else if (this instanceof Later) {         ((Later) this).doThingLater();     } else {         throw new RuntimeException("Foo subclass must implement Now or Later!");     } } 

Design one seems to require more duplicate code across subclasses and has no guarantee that the subclasses will implement Now or Later. Design two templates the behavior that I want, but to be honest it just seems wrong to me because of the casting. I don’t feel particularly good about either approach which makes me feel like there’s a more fundamental design flaw with what I’m doing. Are one of these patterns glaringly less flexible/maintainable and if so, why? If you would scrap both patterns in favor of a different alternative, I’d be happy to hear suggestions and the motivation behind them.