摘要: ## 引言 软件开发过程中,我们经常会遇到各种设计问题,例如如何管理对象之间的关系、如何优化代码的可复用性和可维护性等等。为了解决这些问题,我们可以使用设计模式。 设计模式是一种被广泛接受的软件设计思想,它提供了一套通用的解决方案,可以帮助我们更好地解决常见的软件设计问题。设计模式是从实践中总结出来 阅读全文
posted @ 2023-07-12 14:36 NiueryDiary 阅读(277) 评论(0) 推荐(0) 编辑
摘要: ## 引言 SOLID是五个常见的面向对象设计原则的缩写,其目的是帮助开发者设计易于维护和扩展的软件系统 其中包含**单一职责原则(SRP)**,**开闭原则(OCP)**,**里氏替换原则(LSP)**,**接口隔离原则(ISP)**,**依赖反转原则(DIP)**。 除SOLID之外,后续又增加 阅读全文
posted @ 2023-07-12 08:22 NiueryDiary 阅读(54) 评论(0) 推荐(0) 编辑
摘要: ## 引言 **备忘录模式**是一种行为型设计模式,它允许你捕获对象的内部状态,并在不暴露其实现细节的情况下将其保存在外部对象中,从而可以在以后的某个时间点将该对象恢复到先前的状态。 备忘录模式有以下几个主要角色: - **Originator(原发器)**:是需要被保存状态的对象。它可以创建一个M 阅读全文
posted @ 2023-07-12 08:22 NiueryDiary 阅读(19) 评论(0) 推荐(0) 编辑
摘要: ## 引言 **访问者模式**是一种行为型设计模式,它允许你在不修改对象结构的前提下定义作用于这些对象元素的新操作。它主要解决了在不修改已有类的前提下,对已有类中的对象进行新操作的问题。 访问者模式有以下几个主要角色: - 访问者(Visitor):访问者角色是一个抽象类或接口,其中定义了访问每个被 阅读全文
posted @ 2023-07-12 08:22 NiueryDiary 阅读(22) 评论(0) 推荐(0) 编辑
摘要: ## 引言 **解释器模式**是一种行为型设计模式,它允许你定义一个语言的文法,并且定义一个解释器来解释该语言中的句子。该模式可以用于编写编译器、计算器、查询语言等应用程序。 解释器模式中有以下三个主要角色: - **抽象表达式(Abstract Expression)**:它是所有表达式的抽象基类 阅读全文
posted @ 2023-07-12 08:21 NiueryDiary 阅读(18) 评论(0) 推荐(0) 编辑
摘要: ## 引言 **中介者模式**是一种行为型设计模式,它用于减少对象之间的直接耦合,从而更好地维护代码的可扩展性和可维护性。 在中介者模式中,一个中介者对象封装了一组对象之间的交互逻辑,这些对象通常都有相互关联,但是彼此之间并不直接交互。中介者对象负责协调对象之间的通信,将对象之间的通信逻辑封装在中介 阅读全文
posted @ 2023-07-12 08:20 NiueryDiary 阅读(19) 评论(0) 推荐(0) 编辑
摘要: ## 引言 **状态模式**是一种行为型设计模式,它允许对象在其内部状态改变时改变其行为。该模式将对象的行为与其状态分离,并将每种状态封装在不同的类中。这样,对象可以在运行时根据其状态选择不同的行为,而不必在代码中使用大量的条件语句来处理这些状态。 状态模式的优点是它将与特定状态相关的行为局部化并且 阅读全文
posted @ 2023-07-12 08:20 NiueryDiary 阅读(17) 评论(0) 推荐(0) 编辑
摘要: ## 引言 **模板方法模式**是一种行为设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现,以达到代码复用和减少重复代码的目的。 当我们使用模板方法模式时,我们可以将一些公共的算法步骤放在抽象基类中,这些步骤可以在多个子类中重复使用,从而减少了代码的重复性。同时,我们可以通过子类实现抽象 阅读全文
posted @ 2023-07-12 08:20 NiueryDiary 阅读(19) 评论(0) 推荐(0) 编辑
摘要: ## 引言 **命令模式**是一种行为型设计模式,它将请求封装成一个对象,从而允许你将不同的请求对客户端参数化,将请求排队或记录请求日志,以及支持可撤销的操作。 在命令模式中,有四个主要角色: - **接收者(Receiver)**:接收者是实际执行操作的对象。它定义了如何执行与请求相关的操作。 - 阅读全文
posted @ 2023-07-12 08:19 NiueryDiary 阅读(13) 评论(0) 推荐(0) 编辑
摘要: ## 引言 **责任链模式**是一种行为型设计模式,它通过一条由多个处理器组成的链来处理请求,每个处理器都有机会处理请求,如果一个处理器不能处理该请求,它会将请求传递给下一个处理器,直到请求被处理为止。 在实际应用中,责任链模式常用于处理请求的分发、事件处理等场景,它的优点在于可以动态地添加、删除处 阅读全文
posted @ 2023-07-12 08:19 NiueryDiary 阅读(69) 评论(0) 推荐(0) 编辑
摘要: ## 引言 **策略模式**是一种行为设计模式,它允许在运行时选择算法的行为。该模式定义了一系列算法,将它们封装成独立的类,并使它们可以互相替换。这使得算法可以独立于使用它们的客户端而变化。 在策略模式中,有三个主要的角色: - **环境(Context)**:它是使用策略的对象,它维护一个对策略对 阅读全文
posted @ 2023-07-12 08:18 NiueryDiary 阅读(26) 评论(0) 推荐(0) 编辑
摘要: ## 引言 **迭代器模式**是一种行为型设计模式,它允许按照特定顺序遍历集合对象的元素,同时不暴露集合的内部结构。这样做可以让客户端代码不依赖于集合对象的具体实现,从而提高代码的灵活性和可重用性。 在迭代器模式中,聚合对象将其遍历的职责委托给迭代器对象,而不是在聚合对象中实现遍历。 迭代器模式的优 阅读全文
posted @ 2023-07-12 08:18 NiueryDiary 阅读(10) 评论(0) 推荐(0) 编辑
摘要: ## 引言 **享元模式**是一种结构型设计模式,它允许你在消耗少量内存的情况下支持大量对象。如果你需要生成大量细粒度的类实例来表示数据,而这些实例除了几个参数外基本上都是相同的,那么你可以使用享元模式来 避免大量相似类的开销。 在享元模式中,有两种状态:**内部状态**和**外部状态**。内部状态 阅读全文
posted @ 2023-07-12 08:17 NiueryDiary 阅读(26) 评论(0) 推荐(0) 编辑
摘要: ## 引言 最近做一个配置的功能,需求是该配置项跟另一个整形配置项关联,具有一定的函数关系,例如有一个配置项是值为 `N` ,则另一配置 `F` 项满足函数关系$F=2/(N+1)$。这个函数关系是客户手动输入,只需要简单的四则运算,所以我们要做的就是判断四则运算表达式是否有效,且给定 `N` 的值 阅读全文
posted @ 2023-07-12 08:00 NiueryDiary 阅读(782) 评论(2) 推荐(6) 编辑