本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
開發可重複使用的模式
軟體設計模式是軟體開發中常見問題的可重複使用解決方案。其作為指南或範例,可協助軟體工程師建立遵循最佳實務的產品。本節提供兩種可重複使用模式的概觀,您可以在 AWS CDK 程式碼庫中使用:抽象工廠模式和責任鏈模式。您可以使用每個模式作為藍圖,並針對程式碼中的特定設計問題進行自訂。如需有關設計模式的詳細資訊,請參閱 Refactoring.Guru 文件中的設計模式
抽象工廠
「抽象工廠」模式提供了用於建立相關或相依物件的系列的介面,而無需指定其具體類別。此模式適用於下列使用案例:
-
當用戶端獨立於您在系統中建立和撰寫物件的方式時
-
當系統由多個物件系列組成,且這些系列設計為一起使用時
-
當您必須具有執行期值來建構特定相依性時
如需有關「抽象工廠」模式的詳細資訊,請參閱 Refactoring.Guru 文件中的 TypeScript 中的抽象工廠
下列程式碼範例顯示如何使用「抽象工廠」模式建構 Amazon Elastic Block Store (Amazon EBS) 儲存工廠。
abstract class EBSStorage { abstract initialize(): void; } class ProductEbs extends EBSStorage{ constructor(value: String) { super(); console.log(value); } initialize(): void {} } abstract class AbstractFactory { abstract createEbs(): EBSStorage } class EbsFactory extends AbstractFactory { createEbs(): ProductEbs{ return new ProductEbs('EBS Created.') } } const ebs = new EbsFactory(); ebs.createEbs();
責任鏈
責任鏈是一種行為設計模式,可讓您沿著潛在處理常式鏈傳遞請求,直到其中一個處理常式處理該請求。「責任鏈」模式適用於下列使用案例:
-
當在執行期確定的多個物件是處理請求的候選者時
-
當您不想在程式碼中明確指定處理常式時
-
當您想要向多個物件之一發出請求而不明確指定接收者時
如需有關「責任鏈」模式的詳細資訊,請參閱 Refactoring.Guru 文件中的 TypeScript 中的責任鏈
下列程式碼顯示如何使用「責任鏈」模式建置完成任務所需的一系列動作的範例。
interface Handler { setNext(handler: Handler): Handler; handle(request: string): string; } abstract class AbstractHandler implements Handler { private nextHandler: Handler; public setNext(handler: Handler): Handler { this.nextHandler = handler; return handler; } public handle(request: string): string { if (this.nextHandler) { return this.nextHandler.handle(request); } return ''; } } class KMSHandler extends AbstractHandler { public handle(request: string): string { return super.handle(request); } }