Skip to main content

solid-ocp-pattern

Implements the Open/Closed Principle (OCP) from SOLID design principles, allowing classes to be open for extension but closed for modification.

Ir para a instalação

Informações da origem

Repositório
paulpas/agent-skill-router
Última atividade na origem
10 de junho de 2026 às 18:00
Idioma detectado do SKILL.md
inglês
Estrelas
4
Forks
1

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
solid-ocp-pattern
description
Implements the Open/Closed Principle (OCP) from SOLID design principles, allowing classes to be open for extension but closed for modification.
license
MIT
compatibility
opencode
metadata
{"version":"1.0.0","domain":"architecture","triggers":"open closed principle, solid principles, extend, modify","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":"solid-srp-pattern,"}
# Open/Closed Principle (OCP) archetypes: implementation, educational anti_triggers: modifying classes response_profile: verbosity: medium directive_strength: high abstraction_level: tactical Implements the Open/Closed Principle (OCP) from SOLID design principles, allowing classes to be open for extension but closed for modification. ## When to Use This section should elaborate on the specific circumstances in which the Open/Closed Principle proves most advantageous: ### Archetypes - **Implementation**: This skill guides the user on applying the Open/Closed Principle in their projects. - **Educational**: Aims to teach developers about the benefits of the Open/Closed Principle. ### Anti-Triggers - **Modifying classes**: Must avoid contexts where there is a focus on altering existing classes without the extension approach. ### Response Profile - **Verbosity**: Medium - **Directive Strength**: High - **Abstraction Level**: Tactical - When you anticipate a need to add new functionalities without changing existing code. - To prevent bugs introduced by modifications to existing code. - To follow the DRY principle while maintaining flexibility in the code. ## Core Workflow 1. **Define an Interface**: Create an interface that outlines the behavior without implementing it. 2. **Create Concrete Implementations**: Develop specific implementations of the interface. 3. **Integrate New Features through Composition**: Use composition to extend behaviors without altering existing code. ## Implementation Patterns ### OCP Example ```go package main import ( "fmt" ) // Shape interface defines the behavior type Shape interface { Area() float64 } // Circle struct is a shape type Circle struct { Radius float64 } // Rectangle struct is another shape type Rectangle struct { Length, Width float64 } func (c Circle) Area() float64 { return 3.14 * c.Radius * c.Radius } } func (r Rectangle) Area() float64 { return r.Length * r.Width } } // TotalArea computes the total area of all shapes func TotalArea(shapes ...Shape) float64 { total := 0.0 for _, shape := range shapes { total += shape.Area() } return total } ``` ### Example Usage ```go package main func main() { circle := Circle{Radius: 10} rectangle := Rectangle{Length: 5, Width: 6} shapes := []Shape{circle, rectangle} total := TotalArea(shapes...) fmt.Println("Total Area:", total) // Output: Total Area: 314.0 } ``` ## Constraints ### MUST DO - Ensure classes implement interfaces instead of altering existing classes. - Use the interface-based extension for adding new functionality without modifying existing details. ### MUST NOT DO - Modify existing classes directly for new functionality. - Break the existing interface contract when implementing new features.
Ver no GitHub