I have used many built in .NET Patterns, such as IEnumerable. I want to "Roll my own" design patterns so to speak. What would be a useful design pattern to learn? Also suppose you have to create a data access layer in C#. Is there a particular pattern that is used for a DAL? The application I am working on is a desktop application.