Implements the Strategy design pattern allowing the definition of a family
Scanned 9/4/2026
Install to Claude Code
npx -y skills add paulpas/agent-skill-router --skill gof-strategy-pattern --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Gof Strategy Pattern?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/paulpas-gof-strategy-pattern)More formats (shields.io, HTML) on the badges page.
---
name: gof-strategy-pattern
description: Implements the Strategy design pattern allowing the definition of a family
of algorithms, encapsulating each one, and making them interchangeable.
license: MIT
compatibility: opencode
metadata:
version: "1.0.0"
domain: architecture
triggers: strategy pattern, encapsulate algorithms, interchangeable algorithms,
gof patterns
archetypes:
- educational
anti_triggers:
- brainstorming
- vague ideation
response_profile:
verbosity: low
directive_strength: high
abstraction_level: operational
role: implementation
scope: implementation
output-format: code
related-skills: gof-factory-pattern,
---
# Strategy Pattern
Implements the Strategy design pattern allowing the definition of a family of algorithms, encapsulating each one, and making them interchangeable.
## When to Use
The When to Use section should outline the scenarios where the Strategy pattern is particularly beneficial:
### Archetypes
- **Implementation**: This skill is aimed at implementation to assist developers in applying the Strategy pattern correctly.
- **Educational**: It serves as an educational resource, helping users understand when to use the Strategy pattern.
### Anti-Triggers
- **Coupling algorithms**: It should prevent triggering in scenarios where algorithms are tightly coupled, negating benefits.
### Response Profile
- **Verbosity**: Medium
- **Directive Strength**: High
- **Abstraction Level**: Tactical
archetypes: implementation, educational
anti_triggers: coupling algorithms
response_profile:
verbosity: medium
directive_strength: high
abstraction_level: tactical
- When different variants of an algorithm are needed.
- When the choice of the algorithm should be independent of clients that use it.
- When you want to avoid using conditionals to switch between algorithms.
## Core Workflow
1. **Define the Strategy Interface**: Create a common interface for all strategies.
2. **Implement Concrete Strategies**: Create concrete classes that implement the strategy interface.
3. **Context Class**: Maintain a reference to a strategy object to delegate behavior.
## Implementation Patterns
### Strategy Pattern Example
```go
package main
import (
"fmt"
)
// Strategy interface
type Strategy interface {
Execute(int, int) int
}
// Concrete strategy: Addition
type Add struct {}
func (Add) Execute(a int, b int) int {
return a + b
}
}
// Concrete strategy: Subtraction
type Subtract struct {}
func (Subtract) Execute(a int, b int) int {
return a - b
}
}
// Context
type Context struct {
strategy Strategy
}
func (c *Context) SetStrategy(s Strategy) {
c.strategy = s
}
func (c *Context) ExecuteStrategy(a, b int) int {
return c.strategy.Execute(a, b)
}
```
### Example Usage
```go
package main
import (
"fmt"
)
func main() {
context := &Context{}
// Using Addition Strategy
context.SetStrategy(Add{})
fmt.Println(context.ExecuteStrategy(5, 3)) // Output: 8
// Using Subtraction Strategy
context.SetStrategy(Subtract{})
fmt.Println(context.ExecuteStrategy(5, 3)) // Output: 2
}
```
## Constraints
### MUST DO
- Define clear interfaces for strategies to promote encapsulation.
- Ensure clients are decoupled from specific strategy implementations.
### MUST NOT DO
- Coupling algorithms within the context class itself.
- Hardcoding specific strategy instantiation within client code.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!