paint-brush
ファサードデザインパターンとは?@ssukhpinder
599 測定値
599 測定値

ファサードデザインパターンとは?

Sukhpinder Singh4m2023/02/28
Read on Terminal Reader

長すぎる; 読むには

ファサード デザイン パターンは、サブシステムへの単一のエントリ ポイントを提供し、その複雑さをクライアントから隠します。この例では、在庫、支払い、および配送サブシステムへの統一されたインターフェースを提供するファサードを作成できます。この記事では、C# プログラミング言語を使用した Facade の設計パターンについて説明します。
featured image - ファサードデザインパターンとは?
Sukhpinder Singh HackerNoon profile picture
0-item

アプリケーションのサイズと複雑さが増すにつれて、サブシステム間の相互依存の管理が困難になる可能性があります。ファサード デザイン パターンは、この相互作用を簡素化し、サブシステム内の一連のインターフェイスに統一されたインターフェイスを提供します。

使用事例

顧客が商品を閲覧し、カートに追加して、チェックアウトできるオンライン ショッピング アプリケーションを考えてみましょう。アプリケーションには、在庫、支払い、配送システムなど、他の部分の管理を担当するさまざまなサブシステムがあります。これらのサブシステムには異なるインターフェイスがあり、購入を完了するために相互に通信する必要があります。


問題は、アプリケーションが大きくなるにつれて、サブシステム間のこの通信の管理が難しくなる可能性があることです。 1 つのサブシステムの変更が他のサブシステムに連鎖的に影響を及ぼし、コードベースが複雑で保守が困難になる可能性があります。


ファサード デザイン パターンを使用して、サブシステム間の相互作用を簡素化できます。ファサード パターンは、サブシステムへの単一のエントリ ポイントを提供し、その複雑さをクライアントから隠します。この例では、在庫、支払い、および配送サブシステムへの統一されたインターフェースを提供するファサードを作成できます。

前提条件

  • OOPS の概念に関する基本的な知識。
  • プログラミング言語の知識。

この記事では、C# プログラミング言語を使用した Facade の設計パターンについて説明します。

学習目標

  • Facade デザイン パターンを使用したコーディング方法

入門

サブシステムのインターフェースを定義することから始めましょう

public interface IInventorySystem { void Update(int productId, int quantity); bool IsAvailable(int productId, int quantity); } public interface IPaymentSystem { bool Charge(double amount); } public interface IShippingSystem { bool Ship(string address); }


次に、サブシステムを実装できます。

 public class InventorySystem : IInventorySystem { public void Update(int productId, int quantity) { // update inventory } public bool IsAvailable(int productId, int quantity) { // check if inventory is available return true; } } public class PaymentSystem : IPaymentSystem { public bool Charge(double amount) { // charge the customer return true; } } public class ShippingSystem : IShippingSystem { public bool Ship(string address) { // ship the product return true; } }


最後に、これらのサブシステムへの単純なインターフェースを提供するファサードを作成できます。

 public class OrderFacade { private IInventorySystem _inventorySystem; private IPaymentSystem _paymentSystem; private IShippingSystem _shippingSystem; public OrderFacade() { _inventorySystem = new InventorySystem(); _paymentSystem = new PaymentSystem(); _shippingSystem = new ShippingSystem(); } public bool PlaceOrder(int productId, int quantity, double amount, string address) { bool success = true; if (_inventorySystem.IsAvailable(productId, quantity)) { _inventorySystem.Update(productId, -quantity); success = success && _paymentSystem.Charge(amount); success = success && _shippingSystem.Ship(address); } else { success = false; } return success; } }


OrderFacadeクラスでは、サブシステムのインスタンスを作成し、製品 ID、数量、金額、および配送先住所を受け取る単純なメソッドPlaceOrder提供します。 PlaceOrder手法では、サブシステムを使用して在庫を確認し、顧客に請求し、製品を出荷します。

ファサード パターンを使用すると、サブシステムの詳細を気にすることなく、クライアント コードでOrderFacadeクラスのインスタンスを作成し、 PlaceOrderメソッドを呼び出すことができます。


 var order = new OrderFacade(); bool success; // place an order success = order.PlaceOrder(productId: 123, quantity: 1, amount: 99.99, address: "123 Main St"); if (success) { Console.WriteLine("Order placed successfully"); } else { Console.WriteLine("Unable to place order"); }


この例では、ファサード パターンを使用して、オンライン ショッピング アプリケーションのサブシステム間の対話を簡素化しました。クライアント コードは、「OrderFacade」クラスとやり取りするだけでよく、在庫、支払い、および配送のサブシステムについて知る必要はありません。

結論

ファサード デザイン パターンは、サブシステム間の相互作用を簡素化し、サブシステム内の一連のインターフェイスに統一されたインターフェイスを提供します。結合を減らし、大規模で複雑なアプリケーションの保守性を向上させるのに役立ちます。この記事では、ユース ケースとコード例を使用して、C# のファサード デザイン パターンについて説明します。ファサード パターンを使用すると、コードベースを簡素化し、保守と拡張を容易にすることができます。


読んでいただきありがとうございます。この記事を気に入っていただければ幸いです。コメント欄にフィードバックをお寄せください。

私に従ってください

C# の出版物開発者。 toPinterestSubstackHashnodeWrite.as

その他の設計パターン — Linkedin Learning を参照


こちらにも掲載。