Text this: Using design patterns in object-oriented finite element programming