Software design pattern refers to a reusable, proven solution to a specific, recurring problem typically focused on component-level design, though they can sometimes span multiple components. Design patterns address specific issues related to object creation, interaction, or behavior. [1][2][3][4]
It is important to distinguish software design patterns from software architecture patterns and software architecture styles, as they address different levels of system design. [2][3][4]