design-patterns-implementation について
保守性、拡張性、テスト容易性の高い設計に向けて、定番のデザインパターンを適用するスキルです。アーキテクチャ上の課題やコンポーネントの分離、コードレビューに取り組む開発者向けに、7種類のパターンと実践指針をまとめています。
主な機能
- 017種類のデザインパターンガイド
- 02TypeScriptの実装例
- 03SOLIDと依存性注入の指針
- 04過剰設計を避けるための助言
活用シーン
- 01よくあるアーキテクチャ課題の解決
- 02拡張可能なプラグインシステムの設計
- 03コードのテスト容易性と保守性の向上
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill design-patterns-implementationインストール後、Claude Code で/design-patterns-implementationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/decorator-pattern.mddependency-injection.mdfactory-pattern.mdobserver-pattern.mdrepository-pattern.mdsingleton-pattern.mdstrategy-pattern.mdscripts/scaffold-tests.shtemplates/test-template.js詳細
デザインパターンの実装
目次
概要
実績のあるデザインパターンを適用して、保守性、拡張性、テスト性に優れたコードアーキテクチャを作成します。
使用する場面
- よくあるアーキテクチャ上の問題を解決するとき
- コードの保守性とテスト性を高めるとき
- 拡張可能なプラグインシステムを実装するとき
- コンポーネントを疎結合にするとき
- SOLID 原則に従うとき
- コードレビューでアーキテクチャ上の問題が見つかったとき
クイックスタート
最小限の動作例:
class DatabaseConnection {
private static instance: DatabaseConnection;
private connection: any;
private constructor() {
this.connection = this.createConnection();
}
public static getInstance(): DatabaseConnection {
if (!DatabaseConnection.instance) {
DatabaseConnection.instance = new DatabaseConnection();
}
return DatabaseConnection.instance;
}
private createConnection() {
return {
/* connection logic */
};
}
}
// Usage
const db1 = DatabaseConnection.getInstance();
const db2 = DatabaseConnection.getInstance();
// ... (see reference guides for full implementation)
リファレンスガイド
references/ ディレクトリにある詳細な実装:
| ガイド | 内容 |
|---|---|
| シングルトンパターン | シングルトンパターン |
| ファクトリーパターン | ファクトリーパターン |
| オブザーバーパターン | オブザーバーパターン |
| ストラテジーパターン | ストラテジーパターン |
| デコレーターパターン | デコレーターパターン |
| リポジトリーパターン | リポジトリーパターン |
| 依存性注入 | 依存性注入 |
ベストプラクティス
✅ 推奨事項
- 実際の問題を解決するパターンを選びます
- パターンをシンプルで理解しやすい状態に保ちます
- パターンを選んだ理由を文書化します
- テストのしやすさを考慮します
- SOLID 原則に従います
- 依存性注入を使用します
- 継承よりもコンポジションを優先します
❌ 避けるべきこと
- 理解せずにパターンを適用する
- シンプルな解決策を過剰に複雑化する
- 適さない場面でパターンを無理に適用する
- 不要な抽象化レイヤーを作成する
- チームのパターンへの習熟度を無視する
コメント
Markdown 対応