Which design pattern ensures a class has only one instance and provides a global point of access to it?