Question: What is closure in groovy?

Why we use this closure?

Answer: 
Why is it a problem to create a class for each kind of Request / Response? If you have hundreds of different kinds of Requests and Responses, you might want to try and categorize them better.

I would argue there are common patterns across your requests or responses. Eg. a `FailureResponse` might always contain some status information and maybe an UserData-`object` (which could be anything depending on the use-case). This can be applied to other categories likewise (eg. `SuccessResponse`).
**`dynamic`** is a new static type that acts like a ***placeholder*** for a type not known until runtime. Once the **`dynamic`** object is declared, it is possible to call operations, get and set properties on it, even pass the **`dynamic`** instance pretty much as if it were any normal type. **`dynamic`** gives us a lot of rope to hang themselves with. When dealing with objects whose types can be known at compile time, you should avoid the **`dynamic`** keyword at all costs

You can read more about [Dynamic](https://msdn.microsoft.com/en-us/library/dd264736.aspx)