A design pattern/principle is a general, reusable solution to a commonly occurring problem within a given context in Software Design