It is a Strategy implementation.
https://en.wikipedia.org/wiki/Strategy_pattern
There is a contract (AbstractThing) which defines the strategy, 2 implementations (ConcreteThingOne and ConcreteThingTwo) and the context (func_that_does_something_with_thing).
Wikipedia at the link above gives a lot of details, including diagrams that help understanding.