Which of the following statements about software design patterns are true?
A. Design patterns provide reusable solutions to common problems in software design.
B. The Singleton pattern ensures a class has only one instance and provides a global point of access to it.
C. The Observer pattern is used to encapsulate a request as an object, thereby allowing users to parameterize clients with queues, requests, and operations.
D. The Factory Method pattern defines an interface for creating an object, but lets subclasses alter the type of objects that will be created.