Design patterns provide useful abstractions to help guide the development process. These patterns represent proven solutions for recurring problems. One pattern that has proven useful in the development of EJB solutions is the session facade design pattern. Using this design pattern, the EJB session bean provides a layer of control between the objects it works with and the client code accessing it. The EJB client invokes the session bean and submits requests. The session bean is responsible for gathering any resources needed, using various helper objects. The facade object also plays a controller role, managing the workflow and formatting the results to return to the client. See Figure 26-1.