Software Programming Pattern
A Software Programming Pattern is a software pattern that provides a reusable solution template for common software programming problems (used by software programmers to develop software programs with proven software implementation approaches).
- AKA: Programming Pattern, Code Pattern, Implementation Pattern.
- Context:
- It can typically provide Software Programming Solution Templates through software programming best practices and software programming design principles.
- It can typically guide Software Programming Implementations through software programming techniques and software programming methodologies.
- It can typically improve Software Code Quality through software programming readability enhancements and software programming maintainability improvements.
- It can typically reduce Software Programming Complexity through software programming abstractions and software programming modularizations.
- It can typically enable Software Code Reusability through software programming templates and software programming frameworks.
- ...
- It can often optimize Software Programming Performance through software programming algorithm optimizations and software programming resource managements.
- It can often facilitate Software Programming Collaboration through software programming standards and software programming conventions.
- It can often support Software Programming Testing through software programming testability patterns and software programming debugging techniques.
- It can often enhance Software Programming Security through software programming security patterns and software programming vulnerability preventions.
- ...
- It can range from being a Simple Software Programming Pattern to being a Complex Software Programming Pattern, depending on its software programming implementation complexity.
- It can range from being a Language-Specific Software Programming Pattern to being a Language-Agnostic Software Programming Pattern, depending on its software programming language applicability.
- It can range from being a Structural Software Programming Pattern to being a Behavioral Software Programming Pattern, depending on its software programming pattern focus.
- ...
- It can be represented in Programming Languages through software programming syntaxes.
- It can be applied during Software Programming Tasks through software programming practices.
- It can be documented in Software Programming Resources through software programming pattern catalogs.
- ...
- Examples:
- Creational Software Programming Patterns, such as:
- Singleton Software Programming Pattern for software programming single instance control.
- Factory Method Software Programming Pattern for software programming object creation abstraction.
- Builder Software Programming Pattern for software programming complex object construction.
- Prototype Software Programming Pattern for software programming object cloning.
- Structural Software Programming Patterns, such as:
- Adapter Software Programming Pattern for software programming interface compatibility.
- Decorator Software Programming Pattern for software programming behavior extension.
- Facade Software Programming Pattern for software programming interface simplification.
- Proxy Software Programming Pattern for software programming access control.
- Behavioral Software Programming Patterns, such as:
- Observer Software Programming Pattern for software programming event handling.
- Strategy Software Programming Pattern for software programming algorithm selection.
- Template Method Software Programming Pattern for software programming algorithm skeleton.
- Iterator Software Programming Pattern for software programming collection traversal.
- Concurrency Software Programming Patterns, such as:
- Thread Pool Software Programming Pattern for software programming thread management.
- Producer-Consumer Software Programming Pattern for software programming concurrent processing.
- Read-Write Lock Software Programming Pattern for software programming concurrent access control.
- Monitor Object Software Programming Pattern for software programming synchronization.
- Architectural Software Programming Patterns, such as:
- Model-View-Controller Software Programming Pattern for software programming separation of concerns.
- Model-View-ViewModel Software Programming Pattern for software programming data binding.
- Repository Software Programming Pattern for software programming data access abstraction.
- Dependency Injection Software Programming Pattern for software programming dependency management.
- Functional Software Programming Patterns, such as:
- Memoization Software Programming Pattern for software programming computation caching.
- Monadic Software Programming Pattern for software programming computation composition.
- Map-Reduce Software Programming Pattern for software programming parallel processing.
- Continuation Software Programming Pattern for software programming control flow abstraction.
- ...
- Creational Software Programming Patterns, such as:
- Counter-Examples:
- Software Programming Paradigm, which defines fundamental programming approaches rather than specific software programming solution patterns.
- Software Algorithm Pattern, which focuses on computational strategies rather than software programming implementation patterns.
- Data Model Pattern, which addresses data organization rather than software programming techniques.
- Software Architecture Pattern, which concerns system-level design rather than software programming-level solutions.
- Software Design Methodology, which defines development processes rather than software programming patterns.
- See: Software Design Pattern, Software Anti-Pattern, Software Programming Best Practice, Software Programming Technique, Design Pattern Catalog, Software Pattern Language.
References
2021
- (Wikipedia, 2021) ⇒ https://en.wikipedia.org/wiki/programming_paradigm Retrieved:2021-2-23.
- Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms.
Some paradigms are concerned mainly with implications for the execution model of the language, such as allowing side effects, or whether the sequence of operations is defined by the execution model. Other paradigms are concerned mainly with the way that code is organized, such as grouping a code into units along with the state that is modified by the code. Yet others are concerned mainly with the style of syntax and grammar.
Common programming paradigms include: [1]
- imperative in which the programmer instructs the machine how to change its state,
- procedural which groups instructions into procedures,
- object-oriented which groups instructions with the part of the state they operate on,
- declarative in which the programmer merely declares properties of the desired result, but not how to compute it
- functional in which the desired result is declared as the value of a series of function applications,
- logic in which the desired result is declared as the answer to a question about a system of facts and rules,
- mathematical in which the desired result is declared as the solution of an optimization problem
- reactive in which the desired result is declared with data streams and the propagation of change
- imperative in which the programmer instructs the machine how to change its state,
- Symbolic techniques such as reflection, which allow the program to refer to itself, might also be considered as a programming paradigm. However, this is compatible with the major paradigms and thus is not a real paradigm in its own right.
For example, languages that fall into the imperative paradigm have two main features: they state the order in which operations occur, with constructs that explicitly control that order, and they allow side effects, in which state can be modified at one point in time, within one unit of code, and then later read at a different point in time inside a different unit of code. The communication between the units of code is not explicit. Meanwhile, in object-oriented programming, code is organized into objects that contain a state that is only modified by the code that is part of the object. Most object-oriented languages are also imperative languages. In contrast, languages that fit the declarative paradigm do not state the order in which to execute operations. Instead, they supply a number of available operations in the system, along with the conditions under which each is allowed to execute. The implementation of the language's execution model tracks which operations are free to execute and chooses the order independently. More at Comparison of multi-paradigm programming languages.
- Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms.