This document discusses the Factory design pattern for encapsulating classes. It defines the Factory pattern as an interface for creating objects but letting subclasses decide which class to instantiate. The document recommends applying the Factory pattern when classes share a public interface, superclass, and package by making constructors non-public and using a factory to create instances. Benefits include clearer creation through factory functions, hiding unneeded classes, and enforcing programming to interfaces over implementations. Variations and an example are provided.