I would keep as simple as possible (but no simpler ;-)
In your deliberately simplified example I would have a single class, the Check functionality is closely related to the Create functionality so there a degree of cohesiveness, so we can argue that this code belongs together.
I'd be motivated to refactor the code into separate classes under some conditions. Before explaining some such conditions, note the thought process: I know I can refactor should I need to, and indeed I can probably do so without perturbing any users of the Create functionality; the design has some intrinsic flexibility, we're just thinking about rearranging the internals of the Create implementation.
Some possible reasons to refactors into two classes:
- The checks we need to do might become more complex - eg. check for permissions, for space ... - we might want run-time selectivity of the checks, feels like a hierarchy of Check classes might be emerging, time to refactor.
- We need to reuse the check in another context, in some other class.
- The check code becomes complex in its own right, we need to refactor it's code so we can understand it, we grow lots of implementation functions specifically for Check. At this point our Create class becomes cluttered, time to refactor.
- As complexity increases we see the need for separate testing of Check, so it has become a first-class Class - needs documenting and controlling in its own right.