What is "pattern-design"
In software engineering, a design pattern is a general reusable solution to a problem that commonly occurs within a given context in software design.
A design pattern is not a design finished that can be directly transformed into code. It is a description or model of how to solve a problem that can be used in several different situations.
Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the classes of final applications or objects that are involved. Many patterns imply object orientation or, more generally, changeable state, and so cannot be so applicable in functional programming languages, where the data is immutable or treated as such.