デザイン パターンは、ソフトウェア開発で繰り返し発生する問題に対する汎用的な解決策です。これらのパターンは、コードを体系的に構造化するのに役立ち、システムのメンテナンス、再利用、拡張性を容易にします。 JavaScript のスーパーセットである TypeScript では、強力な型指定とオブジェクト指向機能により、デザイン パターンをさらに効率的に実装できます。
この投稿では、デザイン パターンの 3 つの主要なカテゴリ (創造、構造、動作) と、それらを TypeScript で実装する方法について説明します。
作成パターンはオブジェクトの作成を処理し、インスタンス プロセスをカプセル化し、コードの再利用を促進します。
例: シングルトン
シングルトンは、アプリケーションのライフサイクル全体を通じて、クラスが単一のインスタンスのみを持つことを保証します。
class Singleton { private static instance: Singleton; private constructor() {} static getInstance(): Singleton { if (!Singleton.instance) { Singleton.instance = new Singleton(); } return Singleton.instance; } someMethod() { console.log("Método do Singleton"); } } const instance1 = Singleton.getInstance(); const instance2 = Singleton.getInstance(); console.log(instance1 === instance2); // true
上記の例では、getInstance() メソッドにより、Singleton クラスのインスタンスが 1 つだけ作成されることが保証されています。
構造パターンはクラスとオブジェクトの構成を扱い、より小さく単純な部分から大規模なコード構造を構築できるようにします。
例: アダプター
アダプター パターンを使用すると、互換性のない 2 つのインターフェイスを連携させることができます。これは、コードが期待するものとは異なるインターフェイスを持つクラスを使用する場合に便利です。
// Interface antiga class OldAPI { oldRequest() { return "Dados da API antiga"; } } // Interface nova class NewAPI { newRequest() { return "Dados da API nova"; } } // Adapter que adapta a interface antiga para a nova class APIAdapter { private oldAPI: OldAPI; constructor(oldAPI: OldAPI) { this.oldAPI = oldAPI; } newRequest() { return this.oldAPI.oldRequest(); } } const oldAPI = new OldAPI(); const adapter = new APIAdapter(oldAPI); console.log(adapter.newRequest()); // "Dados da API antiga"
この例では、アダプター (APIAdapter) により、NewAPI が期待するインターフェースで OldAPI クラスを使用できるようになります。
動作パターンはオブジェクト間の相互作用と通信を扱い、コードの柔軟性と分離を促進します。
例: オブザーバー
Observer パターンは、オブジェクト間の 1 対多の依存関係を定義するため、オブジェクトの状態が変化すると、そのすべての依存関係が自動的に通知され、更新されます。
interface Observer { update(data: any): void; } class Subject { private observers: Observer[] = []; addObserver(observer: Observer) { this.observers.push(observer); } removeObserver(observer: Observer) { this.observers = this.observers.filter(obs => obs !== observer); } notifyObservers(data: any) { this.observers.forEach(observer => observer.update(data)); } } class ConcreteObserver implements Observer { update(data: any) { console.log("Observer atualizado com dados:", data); } } const subject = new Subject(); const observer1 = new ConcreteObserver(); const observer2 = new ConcreteObserver(); subject.addObserver(observer1); subject.addObserver(observer2); subject.notifyObservers("Alguma informação importante"); // Ambos observers recebem a atualização
上記の例では、Observer パターンにより、複数のオブジェクトが対象オブジェクト (Subject) の状態の変化を観察し、それに反応することができます。
デザイン パターンは、堅牢でスケーラブルなコードを構築するための強力なツールです。 TypeScript は、静的型付けとオブジェクト指向の特性を備えており、これらの標準を実装するための優れた環境であり、開発のセキュリティと生産性が向上します。
作成パターン、構造パターン、および動作パターンを使用することで、コードの可読性と保守性を向上させるプラクティスを採用し、一般的な開発上の問題に対する効果的な解決策を確保します。
この投稿が、TypeScript でデザイン パターンを適用する方法を理解するのに役立つことを願っています。これらの実装をプロジェクトで試して、コードの品質がどのように向上するかを確認してください!
以上がTypeScript のデザイン パターンの理解と実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。