Guess the random number game
Looking at the class SimpleRandomNumberGenerator :


Having generate() delegate to a private method is, in this case a bit overkill.
You create a new Random instance for each method invocation. This makes the SimpleRandomNumberGenerator not genrating an even distirbution of random numbers. Make it a private final field initialized at the declaration or in the constructor.
Good use of coding to interfaces, by hiding the implementation details behind an interface.


Then MainApplication :


Spot on : kept simple this class' responsibility is to wire everything together and kick things off.


And now for the meat SimpleGuessingGame :


Several fields of this class can be truned into local variables in the one method that uses them : difficultyLevel, random and input. 
startGame() is well implemented, easy to read.
On the whole the class has at least 2 responsibilities :


handling user interaction
keeping track of game state


That is too much. Imagine here you'd want to be able to play the same game but with a graphical UI.

So we want to split this into more classes using interfaces to hide implementation from one another.

I would suggest using these two interfaces : 

interface UserInteraction {

    String askDifficulty();

    void close();

    String askToGuess();

    void showHowToEndMessage();

    void showWinMessage();

    void showGuessSmallerMessage();

    void showGuessLargerMessage();
}


interface GameState {

    Result guess(int guess);
}

public enum Result {

    CORRECT, GUESS_LARGER, GUESS_SMALLER
}

checkInputIsNumber() should be split into two separate methods : one for the difficulty and one for the guesses. They can then be named more aptly to increase readability (boolean parameters say so little at the call site)
the loop in the play() method is implemented as an infinite loop, while it is obviously driven by the game state. Meanwhile endGame() quite harshly exits, this makes it harder to embed the game in a larger program. Only the MainApplication class should call System.exit()


There's more to do as a follow up on these remarks, but I'd start there.