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.

跳到安装

来源信息

仓库
paulpas/agent-skill-router
最近来源活动
2026年6月10日 18:00
检测到的 SKILL.md 语言
英语
星标
6
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
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.
在 GitHub 查看