Which Design Pattern should you use when a system should be independent of the creation, composition, and representation of its products? Also, which Design Pattern should you use when the classes to instantiate are determined at runtime, such as when dynamic loading is used?