Closure, following Wikipedia, called as lexical closure or function closure can be implemented as a variant of the Mathematica OOP. Here, the sample is a counter.
Module[{count = 0},
counter[object] ^:= ++count;
]
This definition is encapsulated, let's define a global function simultaneously as follows.
count = -1; counter[x_] := x + 1;
Let's run the closure, "counter".
Table[counter[object], {10^3}]; counter[object]
This closure returns 1001.
Let's run the global function.
{counter[0], count}
This global function and variable returns, {1,-1}.