Registry Pattern
This use case shows how you enhance objects that mirror database table lines, where the database table stands for business objects such as an order, a customer, or a material.
When you call the BAdI from inside the respective class, you get one BAdI instance for each object. In that way you can easily enhance your objects with new methods or attributes. You just have to make some additional provisions if you want to access private or protected attributes or methods of your object with the BAdI. In this case you have to pass the object reference to the BAdI and declare the friend relation to the BAdI interface.
GET BADI my_badi CONTEXT me
CALL BADI my_badi->meth

Each instance of the cl_mat gets an addition of its own, which enhances the class.