Skip to main content

gof-strategy-pattern

Implements the Strategy design pattern allowing the definition of a family of algorithms, encapsulating each one, and making them interchangeable.

Zur Installation springen

Quellinformationen

Repository
paulpas/agent-skill-router
Letzte Quellaktivität
10. Juni 2026 um 18:00
Erkannte Sprache von SKILL.md
Englisch
Sterne
6
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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.
Auf GitHub ansehen