📝 设计模式

89篇技术文档
  拦截过滤器模式

📅  最后修改于: 2021-09-10 02:43:32        🧑  作者: Mango

请求的预处理和后处理是指在该请求的核心处理之前和之后采取的操作。其中一些操作决定处理是否会继续,而另一些操作则将传入或传出的数据流处理为适合进一步处理的形式。经典的解决方案包括一系列条件检查,任何失败的检查都会中止请求。嵌套的 if/else 语句是一种标准策略,但这种解决方案会导致代码脆弱性和复制粘贴式编程风格,因为过滤器的流程和过滤器的操作被编译到应用程序中。以灵活不显眼的方式解决这个问题的关...

  轮询和流媒体 – 概念和场景

📅  最后修改于: 2021-09-10 02:43:44        🧑  作者: Mango

在系统中,客户端和服务器一起通信,其中客户端请求和服务器用请求的数据响应相应的客户端。现在可以选择我需要以什么频率更新数据?好吧,这完全取决于您的目的和系统。在这里,我们将讨论轮询和流传输两个基本概念。轮询它被定义为客户端以固定时间间隔(可能每 x 秒)请求特定数据的过程,并且服务器返回带有所需数据的通常响应。在这些场景中,客户端需要在即时模式下定期更新数据(从服务器获取数据),轮询可能不会使您的...

  实现单个链表的迭代器模式

📅  最后修改于: 2021-09-10 02:43:56        🧑  作者: Mango

STL 是 C++ 的支柱之一。它让生活变得更轻松,尤其是当您专注于解决问题并且不想花时间实施已经可用的东西时,这保证了稳健的解决方案。软件工程的关键方面之一是避免重新发明轮子。可重用性始终是首选。虽然依赖库函数直接影响我们的效率,但如果没有正确理解它是如何工作的,有时就会失去我们一直在谈论的工程效率的意义。错误选择的数据结构可能会在未来某个时候再次困扰我们。解决方法很简单。使用库方法,但要知道它...

  Java的工厂方法设计模式

📅  最后修改于: 2021-09-10 02:44:09        🧑  作者: Mango

它是一种创建设计模式,它讨论对象的创建。工厂设计模式说定义一个接口(一个Java接口或一个抽象类)并让子类决定实例化哪个对象。接口中的工厂方法允许一个类将实例化推迟到一个或多个具体的子类。由于这种设计模式谈论对象的实例化,因此它属于创建型设计模式的范畴。如果我们注意到名称Factory method,那意味着有一个方法是一个工厂,通常工厂涉及创建的东西,在这里创建一个对象。这是创建对象的最佳方法之...

  设计像Youtube一样的视频分享服务系统

📅  最后修改于: 2021-09-10 02:44:21        🧑  作者: Mango

视频共享服务系统的目的Youtube 是基于广告的视频共享服务,允许用户上传基于视频的媒体内容。用户可以上传、观看、搜索、喜欢、不喜欢视频,对视频添加评论。用户只能以注销用户的身份上传/删除视频,但他们可以以注销用户的身份搜索/观看视频。该服务是基于广告的服务,并且是免费的,因此用户在观看视频时会看到广告。此外,用户可以通过他们的帐户关注其他用户或频道。此外,用户只有在登录系统时才能对视频添加评论...

  前端控制器设计模式

📅  最后修改于: 2021-09-10 02:44:31        🧑  作者: Mango

前端控制器设计模式意味着对应用程序中资源的所有请求都将由单个处理程序处理,然后分派到该类型请求的适当处理程序。前端控制器可能会使用其他助手来实现调度机制。UML 图前端控制器设计模式设计组件控制器:控制器是处理系统中所有请求的初始接触点。控制器可以委托助手完成用户的身份验证和授权或启动联系人检索。视图:视图代表并向客户端显示信息。视图从模型中检索信息。帮助程序通过封装和调整用于显示的底层数据模型来...

  设计一个类似 Bookmyshow 的电影票预订系统

📅  最后修改于: 2021-09-10 02:44:42        🧑  作者: Mango

我们需要设计一个在线电影票预订系统,用户可以在其中搜索给定城市的电影并进行预订。本文将向您解释预订系统的架构。如何实施座位预订流程?解决方案 :用于用户角色的主要类:用户电影剧院预订地址设施JavaJava这是一个 OOP 设计问题,因此不需要完整的代码。上面的代码只有类和属性。在上面的代码中,如您所见,枚举是不言自明的。我们有用户类,其中保留了用户的详细信息。保留剧院名称、地址和当前正在播放的电...

  责任链设计模式

📅  最后修改于: 2021-09-10 02:44:53        🧑  作者: Mango

责任链模式用于在软件设计中实现松散耦合,其中来自客户端的请求被传递到对象链以处理它们。稍后,链中的对象将自行决定由谁来处理请求,以及是否需要将请求发送到链中的下一个对象。责任链模式何时何地适用:当您想解耦请求的发送者和接收者时在运行时确定的多个对象是处理请求的候选对象当您不想在代码中显式指定处理程序时当您想向多个对象之一发出请求而不明确指定接收者时。当多个对象可以处理一个请求并且处理程序不必是特定...

  单例设计模式 |执行

📅  最后修改于: 2021-09-10 02:45:04        🧑  作者: Mango

单例设计模式 |介绍单例模式是最简单的设计模式之一。有时我们只需要我们类的一个实例,例如多个对象共享的单个 DB 连接,因为为每个对象创建单独的 DB 连接可能成本很高。类似地,应用程序中可以有一个配置管理器或错误管理器来处理所有问题,而不是创建多个管理器。定义:单例模式是一种设计模式,它将类的实例化限制为一个对象。让我们看看实现这样一个类的各种设计选项。如果您对静态类变量和访问修饰符有很好的掌握...

  统一建模语言 (UML) |状态图

📅  最后修改于: 2021-09-10 02:45:14        🧑  作者: Mango

状态图用于表示系统或系统一部分在有限时间实例中的状况。这是一个行为图,它使用有限状态转换来表示行为。状态图也称为状态机和状态图图。这些术语经常互换使用。简单地说,状态图用于对类的动态行为进行建模,以响应时间和不断变化的外部刺激。我们可以说每个类都有一个状态,但我们不会使用状态图对每个类进行建模。我们更喜欢用三个或更多状态对状态进行建模。状态图的用途——我们用它来说明导致状态变化的事件(我们没有显示...

  延迟加载设计模式

📅  最后修改于: 2021-09-10 02:45:26        🧑  作者: Mango

延迟加载是一个概念,我们将对象的加载延迟到我们需要它的时候。延迟加载只是在实际需要时初始化类的过程的一个花哨名称。简单来说,延迟加载是一种软件设计模式,其中对象的初始化仅在实际需要时发生,而不是在之前发生,以保持使用的简单性并提高性能。当对象创建的成本非常高并且对象的使用非常少时,延迟加载是必不可少的。所以这是值得实施延迟加载的场景。延迟加载的基本思想是在需要时加载对象/数据。例如,假设您正在创建...

  模板方法设计模式

📅  最后修改于: 2021-09-10 02:45:37        🧑  作者: Mango

模板方法设计模式是将算法定义为操作的骨架,细节由子类实现。算法的整体结构和序列由父类保留。模板是指具有固定预设格式的 HTML 模板等预设格式。同样在模板方法模式中,我们有一个预设的结构方法叫做模板方法,它由步骤组成。这些步骤可以是一个抽象方法,将由其子类实现。这种行为设计模式是最容易理解和实现的模式之一。这种设计模式在框架开发中广泛使用。这也有助于避免代码重复。来源:维基百科AbstractCl...

  如何防止单例模式的反射、序列化和克隆?

📅  最后修改于: 2021-09-10 02:45:48        🧑  作者: Mango

先决条件:单例模式在本文中,我们将看到哪些概念可以破坏类的单例属性以及如何避免它们。主要有 3 个概念可以破坏类的单例属性。让我们一一讨论它们。反射:反射会破坏单例类的单例属性,如下例所示:JAVAJAVAJAVAJAVAJAVAJAVAJAVA运行这个类后,你会看到 hashCode 不同,这意味着创建了同一个类的 2 个对象,并且单例模式已被销毁。克服反射问题:为了克服反射引起的问题,使用枚举...

  设计模式:通过现实生活中的例子了解重要性

📅  最后修改于: 2021-09-10 02:45:59        🧑  作者: Mango

软件设计模式……软件设计模式是一种通用的、可重用的解决方案,用于解决软件设计中给定上下文中的常见问题。这是维基百科上写的关于软件设计模式的定义……如果你是一个有经验的开发人员并且花了一些时间为一些软件编写代码,那么上面的定义对你来说很有意义,但同一行就在你头上,听起来很无聊,如果你是一个初学者,完全不知道它。我们先和有经验的开发者讨论一下……(初学者请稍等,或者直接跳过下一段)。软件设计模式……有...

  依赖倒置原则 (SOLID)

📅  最后修改于: 2021-09-10 02:46:10        🧑  作者: Mango

让我们了解 SOLID 原则组的关键原则之一,即依赖倒置原则。依赖倒置原则是大多数设计模式所依据的原则之一。依赖倒置讨论了不同类或模块之间的耦合。它侧重于较高类不依赖于较低类而是依赖于较低类的抽象的方法。依赖倒置的主要格言是任何更高的类都应该始终依赖于类的抽象而不是细节。这种旨在减少类之间耦合的目的是通过在层之间引入抽象来实现的,因此并不关心真正的实现。我们通过一个例子来理解依赖倒置原理。假设您是...