
设计要素
文章平均质量分 88
Solomon_肖哥弹架构
Solomon(肖爱良) - 前百度环境音乐CTO&架构师、微服务专家 - 中国机械出版社签约作家,《深入理解Dubbo工业级架构设计》图书的作者 - 分享高并发、高可用、高性能的分布式(微服务、存储、事务、限流)架构设计原理
展开
-
低耦合的黄金法则:好莱坞原则的实践指南
好莱坞原则(Hollywood Principle)是一种软件设计哲学,核心理念是“别调用我们,我们会调用你”(Don't call us, we'll call you)。这个原则鼓励创建松耦合的系统,其中组件不主动调用依赖的服务,而是通过回调、事件订阅或依赖注入等方式等待被调用。这种设计提高了系统的灵活性和可维护性,使得组件更容易独立扩展和测试。通过反转控制权,好莱坞原则帮助构建了更易于管理和适应变化的软件架构。原创 2025-02-16 11:04:31 · 784 阅读 · 0 评论 -
配置驱动的微服务:架构灵活性的新篇章
在快速变化的业务环境中,微服务架构的灵活性成为了系统设计的核心要求。配置化策略允许系统行为通过外部配置来调整,而不是硬编码在应用程序中,从而提高了系统的适应性和可维护性。原创 2025-02-15 10:50:33 · 900 阅读 · 0 评论 -
灵活架构的秘诀:GRASP多功能原则的深度解析
在软件设计中,控制对象的创建和管理对象的生命周期是常见的挑战。GRASP中的多功能(Multiton)原则提供了一种模式,用于在多个地方需要访问同一对象实例的场景。多功能原则建议创建有限数量的实例,并且这些实例可以在不同的地方被访问,同时保持了控制和封装。原创 2025-01-27 12:36:57 · 1159 阅读 · 0 评论 -
架构师妙用:充血模型行为与状态管理类设计(设计篇)
在充血模型中,领域对象负责管理自己的状态,这意味着它们不仅拥有数据(状态),还拥有改变这些数据的逻辑(行为)。领域对象的状态管理包括确保状态的完整性、一致性,以及在状态变化时执行任何必要的业务规则或约束。原创 2025-01-26 23:45:37 · 533 阅读 · 0 评论 -
软件设计的巧夺天工:GRASP间接原则的精妙实践
在软件系统的设计和开发过程中,组件之间的交互是不可避免的。随着系统规模的扩大和功能的增加,这些交互可能变得复杂且难以管理。直接的组件间交互可能导致紧耦合,使得系统难以维护、扩展和理解。间接原则作为GRASP的一部分,提供了一种解决方案。它建议在组件之间引入一个或多个中间层,以减少它们之间的直接依赖。这种中间层充当客户端和服务器之间的代理,处理请求并转发它们到适当的组件。原创 2025-01-26 23:26:36 · 688 阅读 · 0 评论 -
创建者原则:GRASP中提升软件设计质量的关键
依赖者也叫创建者原则作为GRASP的一部分,关注于对象创建的职责分配。它建议将对象的创建逻辑放在最了解如何创建该对象的类中,也就是让创建对象的类负责维护该对象。原创 2025-01-26 14:24:55 · 847 阅读 · 0 评论 -
多态原则:GRASP中的软件设计灵活性和扩展性
多态是GRASP原则中的核心概念之一,它允许以统一的方式处理不同类型的对象,从而提高软件设计的灵活性和可扩展性。原创 2025-01-26 14:23:08 · 881 阅读 · 0 评论 -
打造坚如磐石的代码:18种高内聚原则精解
高内聚原则是GRASP(General Responsibility Assignment Software Principles)中的一个重要原则,它强调一个类或模块应该只包含与其功能紧密相关的操作和数据,从而提高代码的可读性和可维护性。原创 2025-01-26 14:21:20 · 547 阅读 · 0 评论 -
精雕细琢:单一职责原则在电商架构中的运用(设计篇)
软件开发中单一职责原则(SRP)是SOLID五大设计原则中的第一个,由Robert C. Martin在21世纪初提出。它主张一个类应该仅有一个职责,并且该职责应该被完全封装在类中。这一原则的目的是减少类间的耦合,增加代码的可维护性和可扩展性。原创 2024-11-09 14:56:32 · 622 阅读 · 0 评论 -
架构师妙用:充血模型行为与状态管理类设计(架构篇)
在充血模型中,领域对象负责管理自己的状态,这意味着它们不仅拥有数据(状态),还拥有改变这些数据的逻辑(行为)。领域对象的状态管理包括确保状态的完整性、一致性,以及在状态变化时执行任何必要的业务规则或约束。原创 2024-09-29 20:20:25 · 490 阅读 · 0 评论 -
合成复用原则:桌面系统与电商系统中构建灵活的软件设计方案
合成复用原则(Composite Reuse Principle, CRP),也被称作组合/聚合复用原则,它建议优先使用对象组合,而不是通过继承来复用代码。这个原则强调通过将对象组合成树形结构来实现代码复用,从而提供更大的灵活性。原创 2024-09-28 19:16:41 · 969 阅读 · 0 评论 -
68种架构可扩展性设计:从类到服务治理(成就架构师必备,收藏金典)
在现代软件工程中,可扩展性是确保软件系统能够适应未来增长的关键特性。本文将全方位探讨可扩展性的多个方面,包括类设计、插件化、框架设计、架构设计、中间件集成扩展和服务治理。主要传递给大家扩展性设计的思路与涉足的范围。具体完善的细节,可以参考各中间件与业务架构。不了解的可以关注肖哥,提问。68种架构可扩展性设计:从类到服务治理(成就架构师必备,收藏金典)原创 2024-08-16 12:31:56 · 1290 阅读 · 0 评论 -
关注点分离:提升软件设计的清晰度与灵活性
在软件架构中,关注点分离(Separation of Concerns, SoC)是一种至关重要的设计原则,它帮助开发者构建更加模块化、灵活且易于维护的系统。通过将不同的功能和业务逻辑分离到不同的组件中,我们可以降低系统的复杂性,提高代码的可读性和可维护性。原创 2024-08-03 14:00:32 · 831 阅读 · 0 评论 -
信息专家原则:电子商务订单管理系统的实践(架构师篇)
信息专家原则是GRASP(General Responsibility Assignment Software Principles)原则之一,它建议将处理特定数据的责任分配给最了解这些数据的类。这有助于提高代码的内聚性和降低耦合度。原创 2024-07-27 17:29:34 · 324 阅读 · 0 评论 -
多例模式(Multiton Pattern):互联网应用配置管理实战案例分析
在一个高可用的互联网应用中,常常需要根据不同的配置组来创建多个具有特定配置的实例,例如数据库连接池、缓存实例等。这些实例的数量是已知的,并且在应用启动时就需要确定。原创 2024-07-24 13:56:16 · 915 阅读 · 0 评论 -
架构师妙用:充血模型行为与状态管理类设计
在充血模型(Rich Domain Model)中,对象的“行为”和“状态管理”:1. **行为(Behavior)** : - 这指的是领域对象执行的动作或操作,通常是通过对象的方法(函数)来实现的。这些方法定义了对象可以做什么,以及它如何响应来自外部的请求。1. **状态(State)** : - 这指的是领域对象在任何给定时间点的内部数据或属性的集合。状态可以影响对象的行为,并且对象的行为可能会改变其状态。在充血模型中,领域对象负责管理自己的状态,这意味着它原创 2024-07-23 13:59:24 · 1032 阅读 · 0 评论 -
赋予领域模型生命力:充血模型在现代软件架构中的崛起(架构篇)
充血模型是一种软件设计方法,它将业务逻辑和决策能力赋予领域对象本身,而不是将它们放置在外部的业务逻辑层或服务层中。这种方法强调领域对象的完整性和自足性,使得每个领域对象都能够独立地执行其业务规则。原创 2024-07-22 12:25:21 · 1266 阅读 · 0 评论 -
贫血模型:简化设计还是过度简化(架构篇)?
贫血模型是一种软件设计模式,其中业务逻辑被放置在服务层或管理类中,而领域模型仅包含数据和访问这些数据的方法。这种模式有时被认为是反模式,因为它可能导致领域模型过于简单,缺乏业务逻辑。原创 2024-07-21 11:07:15 · 1090 阅读 · 0 评论 -
稳定依赖原则(Stable Dependencies Principle):构建健壮系统的黄金法则
稳定依赖原则是软件设计中的关键原则之一,它强调依赖于稳定的抽象,而不是依赖于易变的具体实现。这一原则有助于提高软件系统的稳定性和可维护性。原创 2024-07-18 17:40:55 · 1154 阅读 · 0 评论 -
DeferredResultProcessingInterceptor 和 CallableProcessingInterceptor 异步业务场景选择方案
`DeferredResultProcessingInterceptor` 和 `CallableProcessingInterceptor` 在于异步请求处理的拦截器接口,但它们适用于不同的场景和需求。原创 2024-07-17 13:24:45 · 290 阅读 · 0 评论 -
CallableProcessingInterceptor 异步处理订单应用场景说明
`CallableProcessingInterceptor` 拦截器用于处理基于 `Callable` 的异步请求。这种拦截器特别适用于处理那些可能需要很长时间来完成的任务,比如执行数据库查询、调用外部服务、进行文件读写操作等,而不会阻塞服务器的线程。原创 2024-07-17 13:23:25 · 270 阅读 · 0 评论 -
AsyncWebRequestInterceptor 异步处理应用场景说明
`AsyncWebRequestInterceptor` 接口继承自 `WebRequestInterceptor` 并添加了一个新方法 `afterConcurrentHandlingStarted`,这表明它的设计目的是在Spring Web应用程序中处理异步请求时提供拦截能力。以下是设计思路和业务场景的思路提供:原创 2024-07-17 13:21:58 · 313 阅读 · 0 评论 -
WebRequestInterceptor 认证信息应用案例说明
`WebRequestInterceptor` 用于表示在Spring Web应用程序中拦截和处理Web请求的组件。基于这个概念,我们可以构建一个业务场景和关键处理代码示例。原创 2024-07-17 13:17:25 · 188 阅读 · 0 评论 -
ServerWebExchangeContextFilter 过滤器之间共享 `ServerWebExchange`应用案例说明
`ServerWebExchangeContextFilter` 是一个 Spring WebFlux 过滤器,它的主要作用是将当前的 `ServerWebExchange` 实例放入到 Reactor 的 `Context` 中,这样就可以在不需要显式传递 `ServerWebExchange` 的情况下,让参与请求处理的组件能够访问到它。原创 2024-07-17 13:15:18 · 544 阅读 · 0 评论 -
DelegatingFilterProxy 应用案例说明
`DelegatingFilterProxy`过滤器用于将请求委派给 Spring 应用程序上下文中的一个或多个其他过滤器 Bean 进行处理。这种委派机制允许开发者利用 Servlet 过滤器的丰富生态系统,同时保持 Spring 的依赖注入和其他特性。原创 2024-07-17 13:10:26 · 410 阅读 · 0 评论 -
CommonsRequestLoggingFilter 应用案例说明
`CommonsRequestLoggingFilter` 过滤器用于记录HTTP请求的详细信息,通常用于日志记录和问题诊断。这个过滤器是Apache Commons Logging库的一部分,Spring在内部使用它来实现请求日志记录的功能。原创 2024-07-17 13:08:40 · 457 阅读 · 0 评论 -
稳定抽象原则(Stable Abstractions Principle):构建可靠软件的基石
稳定抽象原则是软件设计中的一个重要概念,它强调在设计软件时应该依赖于稳定的抽象,而不是依赖于变化的具体实现。这个原则有助于提高软件的可维护性和可扩展性。原创 2024-07-17 12:45:57 · 876 阅读 · 0 评论 -
项目初期:架构师不要炫技,3大设计原则你不懂
架构师避免过度设计的关键在于理解真实业务需求,采用迭代和敏捷开发方法,专注于核心功能实现。通过遵循SOLID和GRASP原则、适度使用设计模式、保持设计简洁(KISS原则)、避免过早优化,以及进行持续的代码重构,架构师可以确保系统的灵活性和可维护性。同时,建立快速反馈循环、管理技术债务、进行风险评估和原型验证,都是确保设计适度且实用的重要策略。原创 2024-07-16 21:40:22 · 723 阅读 · 0 评论 -
最少知识原则(LKP) :构建低耦合系统的秘诀
最少知识原则,也称为迪米特法则(Law of Demeter, LoD),是一种软件设计原则,它指导我们减少对象之间的交互,使得每个对象只需与其直接的合作伙伴通信,而不必关心合作伙伴的内部细节。原创 2024-07-16 17:48:56 · 814 阅读 · 0 评论 -
YAGNI(You Aren‘t Gonna Need It)原则:让你专注当下,未来不必预设
YAGNI(You Aren't Gonna Need It)原则是极限编程(XP)中的一项核心实践,它告诫开发者只实现当前需要的功能,避免过度设计和提前优化。这个原则帮助团队集中精力解决实际问题,而不是预测未来可能的需求。原创 2024-07-16 15:52:27 · 660 阅读 · 0 评论 -
DRY(Don‘t Repeat Yourself)原则:拒绝重复,拥抱简洁软件黄金法则
DRY(Don't Repeat Yourself)原则是软件开发中的一个基本原则,它强调在代码库中避免重复代码,以减少维护成本和提高代码质量。原创 2024-07-16 12:25:40 · 1000 阅读 · 0 评论