paint-brush
O que é um padrão de design de fachada?por@ssukhpinder
599 leituras
599 leituras

O que é um padrão de design de fachada?

por Sukhpinder Singh4m2023/02/28
Read on Terminal Reader

Muito longo; Para ler

Um padrão de projeto de fachada fornece um único ponto de entrada para um subsistema, ocultando sua complexidade do cliente. Em nosso exemplo, podemos criar uma fachada que forneça uma interface unificada para os subsistemas de estoque, pagamento e remessa. O artigo demonstra os padrões de projeto Facade usando a linguagem de programação C#.
featured image - O que é um padrão de design de fachada?
Sukhpinder Singh HackerNoon profile picture
0-item

À medida que os aplicativos crescem em tamanho e complexidade, o gerenciamento da interdependência entre os subsistemas pode se tornar um desafio. Um padrão de projeto de fachada simplifica essa interação e fornece uma interface unificada para um conjunto de interfaces em um subsistema.

Caso de uso

Considere um aplicativo de compras on-line que permite aos clientes procurar produtos, adicioná-los a um carrinho e finalizar a compra. O aplicativo possui diferentes subsistemas responsáveis pelo gerenciamento de outras partes, como os sistemas de estoque, pagamento e expedição. Esses subsistemas têm interfaces diferentes e precisam se comunicar entre si para concluir uma compra.


O problema é que gerenciar essa comunicação entre subsistemas pode ser difícil à medida que o aplicativo cresce. Alterações em um subsistema podem ter um efeito cascata em outros subsistemas, levando a uma base de código emaranhada e difícil de manter.


Podemos usar o padrão de projeto de fachada para simplificar a interação entre os subsistemas. Um padrão de fachada fornece um único ponto de entrada para um subsistema, ocultando sua complexidade do cliente. Em nosso exemplo, podemos criar uma fachada que forneça uma interface unificada para os subsistemas de estoque, pagamento e remessa.

Pré-requisitos

  • Conhecimento básico dos conceitos OOPS.
  • Qualquer conhecimento de linguagem de programação.

O artigo demonstra os padrões de projeto Facade usando a linguagem de programação C#.

objetivos de aprendizado

  • Como codificar usando um padrão de design Facade

Começando

Vamos começar definindo as interfaces para nossos subsistemas

 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); }


Em seguida, podemos implementar os subsistemas:

 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; } }


Por fim, podemos criar uma fachada que fornece uma interface simples para esses subsistemas:

 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; } }


Na classe OrderFacade , criamos instâncias dos subsistemas e oferecemos um método simples PlaceOrder que recebe o id do produto, quantidade, valor e endereço de entrega. A técnica PlaceOrder usa os subsistemas para verificar o estoque, cobrar do cliente e enviar o produto.

Com o padrão de fachada, o código cliente pode criar uma instância da classe OrderFacade e chamar o método PlaceOrder sem se preocupar com os detalhes dos subsistemas.


 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"); }


Neste exemplo, usamos o padrão de fachada para simplificar a interação entre subsistemas em um aplicativo de compras online. O código do cliente só precisa interagir com a classe `OrderFacade` e não precisa saber sobre os subsistemas de estoque, pagamento e remessa.

Conclusão

O padrão de projeto de fachada simplifica a interação entre subsistemas e fornece uma interface unificada para um conjunto de interfaces em um subsistema. Ele pode ajudar a reduzir o acoplamento e melhorar a capacidade de manutenção de aplicativos grandes e complexos. Este artigo explora o padrão de design de fachada em C# com um caso de uso e exemplos de código. Usando o padrão de fachada, podemos simplificar a base de código e torná-la mais fácil de manter e estender.


Obrigado por ler, e espero que tenha gostado do artigo. Por favor, forneça seus comentários na seção de comentários.

Siga-me

Publicação C# , Dev. para , Pinterest , Substack , Hashnode , Write.as

Mais padrões de design — Linkedin Learning de referência


Também publicado aqui.