paint-brush
哪个是外部开发形式 ? 由@ssukhpinder
599 讀數
599 讀數

什么是外观设计模式?

路过 Sukhpinder Singh4m2023/02/28
Read on Terminal Reader

太長; 讀書

外观设计模式为子系统提供单一入口点,向客户隐藏其复杂性。在我们的示例中,我们可以创建一个外观,为库存、支付和运输子系统提供统一的接口。本文使用 C# 编程语言演示了 Facade 设计模式。
featured image - 什么是外观设计模式?
Sukhpinder Singh HackerNoon profile picture
0-item
发生变化软件过程的投资规模和更复杂化的增添,管理制度子软件机系统之中的彼此之间忽略性看上去具试练性。外观专利开发模式,减化了这些数据交互,而且为子软件机系统中的一列标准界面供给一个多个规范的标准界面。

用例

注意一家在线视频网上选择化妆品应该用环节流程图,它能接受业主手机浏览新产品、将什么和什么增多到网上选择化妆品车并结帐。该应该用环节流程图有差异的的分程序软件担任服务管理许多地方,如货存、支付宝支付和搬运程序软件。哪些分程序软件具备差异的的数据接口,需用彼此之间通讯功能顺利完成选择。


一些问题就是:,因为采用程序代碼的成长,管理制度子模式中的这一通讯能够会很难度。另一个子模式中的改变会对其他子模式带来级联效用,诱发诱发代碼库乱七八糟且没办法保障。


我门还就能够选用铜网外装定制摸式来简易功能模块软件中的可视化交互。铜网外装摸式为功能模块软件能展示简单无线运营中心点,向用户端影藏其很复杂的特征。在我门的例子中,我门还就能够撰写一铜网外装,为销量、支付款和运载功能模块软件能展示統一的端口。

先决条件

  • OOPS 概念的基本知识。
  • 任何编程语言知识。

文中动用 C# 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类中,我们创建了子系统的实例并提供了一个简单的方法PlaceOrder ,它接受产品 ID、数量、金额和送货地址。 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# 中的外部装修设计构思方式。运用外部方式,咱们是也可以简单二维码库,使其更易于保护和延伸。


衷心谢谢你浏览,盼望您感兴趣这篇本文。请在点评要素具备您的评价。

跟着我

, , , , ,

更多设计模式——


也发布

바카라사이트 바카라사이트 온라인바카라