Adapter is a structural design pattern that allows objects with incompatible interfaces to collaborate
Flyweight is a structural design pattern that lets you fit more objects into the available amount of RAM by sharing common parts of state between multiple objects instead of keeping all of the data in each object.