This creational pattern[1] is frequently used for numbers and strings in different programming languages.
In many object-oriented languages such as Python, even primitive types such as integer numbers are objects.
[4] In the object-oriented programming paradigm interning is an important mechanism in the flyweight pattern, where an interning method is called to store the intrinsic state of an object such that this can be shared among different objects which share different extrinsic state, avoiding needless duplication.
[5] Interning continues to be an important technique for managing memory use in programming language implementations; for example, the Java Language Specification requires that identical string literals (that is, literals that contain the same sequence of code points) must refer to the same instance of class String, because string literals are "interned" so as to share unique instances.
[8] The downside is time required to search for existing values of objects which are to be interned.