Nature is full of patterns, e.g. trees, molecular patterns, atoms, people, and their behaviours to name just a few.
So it appears that to construct or build stuff patterns do help.
Of course everything is still unique, but there are groups with strong similarities. We also know that patterns are adopted and improved upon, you might say often they are implemented in different ways.
So without going against the tide of everything there must be some software design pattens that could help us too.
When you combine the ideas we have of objects (with properties methods and events) then we end up talking about software objects that fit into patterns, the groups in this case are particular problems we need to solve.
The language used here is a bit specialised, personally I don't like the word "abstract", it's used too much by some and in way that don't help understanding, so the following might help you as it helped me once (still does!)
Abstract
means Theoretical
The American "Gang of four" published a formal listing of Software Design Patterns shown on the right.
In passing the term "Gang of four" has a completely different meaning for most in the U.K.
There's more
here
So here's the formal definitions of the major Software Design Patterns, they fit into three categories.
A) Creational:
• Factory
• Builder
• Prototype
• Singleton
B) Structural:
• Adapter
• Bridge
• Composite
• Decorator
• Façade
• Flyweight
• Proxy
C) Behavorial:
• Chain of responsibility
• Command
• Interpreter
• Iterator
• Mediator
• Memento
• Observer
• State
• Strategic
• Template
• Visitor
CREATIONAL
STRUCTURAL
BEHAVIOURAL