Build an advanced simulation of Pool game, utilising 6 design patterns (note: I have already developed 3 design pattern). The game consists of a rectangular table with several balls on it. If the balls approach the side of the table, they will bounce back. Balls also bounce off other balls. The player can hit one of the balls, the white cue ball, with the cue stick. The standard table has 6 pockets into which the balls can fall. The game is single player and is finished when all the balls, other than the cue ball, are in the pockets.