I have a process which must do 8 steps, in a particular order. One of the step involves sending an email, another one going on a distant FTP server, another one querying a database, and so on. Now to be able to unit test these 8 steps, each of them is a method in a distinct class. So far so good.
Now the problem I'm facing is that the 'parent' class that calls the steps now receives in its constructor 8 classes, which is clearly a code smell here. You could tell me: hey, just create one class with the first 4 steps, and another one with the 4 others, and the parent will simply receive two classes in it's constructor. In my mind, this also feels wrong - I have the impression that I'm adding complexity and not really solving the problem.
Is there a design pattern or another technique to use when many steps must be called by a class?