Design patterns , unit testing , and refactoring often work together .
The best solution may emerge .
Design patterns , unit testing , and refactoring often work together so that the best solution may emerge .