📝 设计模式

89篇技术文档
  数据访问对象模式

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

数据访问对象模式或 DAO 模式用于将低级数据访问 API 或操作与高级业务服务分开。以下是数据访问对象模式的参与者。UML 图数据访问对象模式设计组件BusinessObject :BusinessObject 代表数据客户端。它是需要访问数据源以获取和存储数据的对象。除了访问数据源的 servlet 或帮助程序 bean 之外,BusinessObject 还可以实现为会话 bean、实体 b...

  适配器模式

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

这种模式很容易理解,因为现实世界充满了适配器。例如,考虑一个 USB 转以太网适配器。当我们在一端有以太网接口而在另一端有 USB 时,我们需要这个。因为它们不相容。我们使用一个将一个转换为另一个的适配器。这个例子非常类似于面向对象的适配器。在设计中,当我们有一个类 (Client) 需要某种类型的对象并且我们有一个提供相同功能但公开不同接口的对象 (Adaptee) 时,就会使用适配器。要使用适...

  Java单例设计模式实践与示例

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

在之前的文章中,我们详细讨论了单例设计模式和单例类实现。在本文中,我们将看到如何创建单例类。阅读本文后,您将能够根据您的用途、简单性和消除的瓶颈来创建您的单例类。在Java有很多方法可以做到这一点。所有这些方式在模式的实现上都不同,但最终,它们都实现了单个实例的相同最终结果。Eager 初始化:这是创建单例类的最简单方法。在这种情况下,类的对象是在 JVM 加载到内存时创建的。它是通过直接为引用分...

  Java的六边形架构

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

根据软件开发设计原则,需要最少维护工作的软件被认为是好的设计。也就是说,维护应该是架构师必须考虑的重点。在本文中,讨论了一种这样的架构,称为六边形架构,它使软件易于维护、管理、测试和扩展。六边形架构是Alistair Cockburn在 2006 年创造的一个术语。六边形架构的另一个名称是端口和适配器架构。该架构将应用程序分为两部分,即内部部分和外部部分。应用程序的核心逻辑被视为内部部分。数据库、...

  如何使用面向对象的原则设计停车场?

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

使用面向对象的原则设计停车场。问:亚马逊、苹果、谷歌和更多采访解决方案:就我们现在的目的而言,我们将做出以下假设。我们做出这些特定假设是为了在不增加太多的情况下增加问题的复杂性。如果你做出不同的假设,那完全没问题。1)停车场有多层。每个级别都有多排点。2)停车场可停摩托车、汽车、公交车。3)停车场有摩托车点、紧凑点、大点。4)摩托车可以停在任何地方。5) 汽车可以停在一个紧凑的地方或一个大的地方。...

  设计物流系统

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

设计物流系统(面向对象的设计)。讲述不同的类以及它们之间的关系。这不是系统设计问题,所以这个问题的范围只是定义不同的类(带有它的属性和方法)提问: Adobe解决方案:假设我们要设计一个具有以下基本功能的物流系统:• 系统可以接受订单将其运送到指定目的地。• 订单将是一个项目列表,并且每个订单都需要处理成本。• 用户必须自己注册才能使用本系统。• 用户可以跟踪他/她的订单。• 订单将通过自行车或卡...

  原型设计模式

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

原型允许我们向客户端隐藏创建新实例的复杂性。这个概念是复制现有对象而不是从头开始创建新实例,这可能包括昂贵的操作。现有对象充当原型并包含对象的状态。新复制的对象可能仅在需要时更改相同的属性。这种方法节省了昂贵的资源和时间,特别是当对象创建是一个繁重的过程时。原型模式是一种创造型设计模式。需要原型模式,当对象创建耗时,操作成本高时,我们用现有对象本身创建对象。从现有对象创建对象的最佳可用方法之一是c...

  服务定位器模式

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

服务定位器模式是一种在软件开发中使用的设计模式,用于用强抽象层封装获取服务所涉及的过程。此模式使用称为“服务定位器”的中央注册表,它根据请求返回执行特定任务所需的信息。当服务消费者或服务客户端请求服务实例时,ServiceLocator 负责返回服务实例。UML 图服务定位器模式设计组件Service Locator :Service Locator 抽象了 API 查找服务、供应商依赖性、查找复...

  单例设计模式 |介绍

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

Singleton 是Gang of Four 设计模式的一部分,属于创建型设计模式。在本文中,我们将深入研究单例模式的用法。就建模而言,它是最简单的设计模式之一,但另一方面,就使用的复杂性而言,这是最具争议的模式之一。单例模式是一种设计模式,它限制一个类实例化它的多个对象。它只不过是定义类的一种方式。类以这样一种方式定义,即在程序或项目的完整执行中只创建类的一个实例。它用于在整个执行过程中只需要...

  设计一个点击计数器

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

设计一个点击计数器,计算过去 5 分钟内收到的点击次数。资料来源:微软面试体验“设计命中计数器”问题最近被包括 Dropbox 在内的许多公司提出,而且这个问题比看起来更难。它包括几个主题,如基本数据结构设计、各种优化、并发和分布式计数器。它应该支持以下两种操作:hit和getHits。hit(timestamp)– 显示给定时间戳的命中。getHits(timestamp)– 返回过去 5 分钟...

  设计一个像 OYO Rooms 这样的在线酒店预订系统

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

我们需要设计一个在线酒店预订系统,用户可以在其中搜索给定城市的酒店并进行预订。这是一个 OOP 设计问题,所以我没有在这个解决方案中编写完整的代码。我只创建了类和属性。解决方案 :主要课程:1. 用户2. 房间3. 酒店4. 预订5. 地址6. 设施Java让我解释一下这些类以及它们之间的关系。此处定义的枚举是不言自明的。 User、Room 和 Address 类也是不言自明的。设施类包含酒店提...

  统一建模语言 (UML) |序列图

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

在这篇文章中,我们讨论序列图。统一建模语言 (UML)是软件工程领域的一种建模语言,旨在设置标准方法来可视化系统设计。 UML 指导创建多种类型的图,例如交互图、结构图和行为图。序列图是最常用的交互图。交互图——交互图用于显示系统的交互行为。由于可视化系统中的交互可能是一项繁琐的任务,因此我们使用不同类型的交互图来捕获系统中交互的各种特征和方面。序列图 –序列图只是按顺序描述对象之间的交互,即这些...

  空对象设计模式

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

Null 对象模式是一种设计模式,它简化了可以未定义的依赖项的使用。这是通过使用实现已知接口的具体类的实例而不是空引用来实现的。我们创建一个抽象类,指定要完成的各种操作,扩展这个类的具体类和一个空对象类,提供这个类的任何实现,并将在我们需要检查空值的地方无缝使用。空对象设计模式的 UML 图设计组件Client :此类具有可能需要也可能不需要的依赖项。如果依赖项中不需要任何功能,它将执行空对象的方...

  设计一个在线图书阅读器系统

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

设计一个在线图书阅读器系统(面向对象设计)。被问到:亚马逊、微软,以及更多采访解决方案:假设我们要设计一个基本的在线阅读系统,它提供以下功能:• 搜索图书数据库并阅读一本书。• 用户成员资格创建和扩展。• 一次只有一个活跃用户,并且该用户只有一本活跃的图书类 OnlineReaderSystem 代表我们程序的主体。我们可以实施类,以便它存储有关所有书籍的信息、处理用户管理和刷新显示,但这会使这个...

  产生的大小为N,其大小为M的各子串具有正好k个不同字符的字符串

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

给定 3 个正整数N、M和K。任务是构造一个由小写字母组成的长度为N的字符串,使得每个长度为M 的子字符串恰好有K 个不同的字母。例子:Input:N = 5, M = 2, K = 2Output:abadeExplanation:Each substring of size 2 “ab”, “ba”, “ad”, “de” have 2 distinct letters.Input:N = 7...