`
gxrocky
  • 浏览: 31797 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

解耦合手段

阅读更多

 

解耦合手段

 

如果代码耦合太高,对于BUG修改,新功能增加,测试,都是一个噩梦。

 

我们公司还是有很多牛人的,知识我不知道而已,下面是我一同事的博客上的文章,关于解耦合手段,每读一篇,我会把他链接到这里。

 

 

解耦合手段之一:dry原则

Don't Repeat Yourself

CPD, PMD

 

解耦合手段之二:Single Responsibility Principle

在面向对象的方法中,Robert C. Martin引入了Single Responsibility Principle(SRP),即单一职责原则。就是说:所有的对象都应该有单一的职责,它提供的所有的服务也都仅围绕着这个职责。用Uncle Bob自己的话来说就是:“永远不要让一个类存在多个改变的理由”(There should never be more than one reason for a class to change.)

 

 

解耦合手段之三:Open/Closed Principle

这又是一个面向对向的方法。Open/Closed Principle,可以译成“开/关原则”,“开-闭原则”或者“开放封闭原则”,是说“一个软件实体应当对扩展开放,对修改关闭( Software entities should be open for extension,but closed for modification.)。”这里所说的“实体”可以是函数、类、模块等等。

 

解耦合手段之四:Law of Demeter

迪米特法则(Law of Demeter),又称“最少知识原则”(Principle of Least Knowledge),也是主要针对面向对象思想的,可以简单的概括为“talk only to your immediate friends”。

 

 

 

解耦合手段之五:Dependency Inversion Principle

Dependency Inversion,又被称为控制反转(Inversion of Control)。这种原则又被戏称为“好莱坞原则”——“Don’t call us, we’ll call you.”。Uncle Bob是这样描述DIP(Dependency Inversion Principle)的:

A. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象。

B. 抽象不应该依赖于细节,细节应该依赖于抽象。

 

 

解耦合手段之六:并发

一般的程序都是顺序执行的,在这种情况下,程序的执行和执行的时间是相互依赖的或者说是耦合的。当这种耦合成为一种阻碍时我们就需要并发(Concurrency)。

"Concurrency is a decoupling strategy. It helps us decouple what gets done from when it gets done."

–Clean Code, Robert C. Martin

 

 

解耦合手段之七:Liskov代换原则

子类不应要求比基类更高的precondition。

子类不应弱化基类的postcondition。

 

分享到:
评论

相关推荐

    SIki学院的高度解耦和:事件的监听与广播系统(Unity2018.1.0)资料

    高度解耦合意味着游戏中的组件只需知道事件的存在,而无需了解事件的来源或处理细节。这增强了系统的灵活性,使得修改或添加新的功能变得更加容易。 8. **单例模式(Singleton Pattern)**: 为了在整个应用程序...

    android点菜系统合集csdn上的几个个需要积分的点菜系统合集.rar

    Android点菜系统是现代餐饮行业中不可或缺的技术工具,它集成了菜品展示、订单处理、支付功能等于一体,为顾客提供了便捷的点餐体验,也为餐厅经营者提供了高效管理的手段。本合集收录了来自CSDN上多个需要积分获取...

    disentanglement+vae简介1

    《Disentanglement+VAE简介1》这篇文章探讨的主题是深度学习中的一种技术,即Disentangled Representation(解耦合表示)与Variational Autoencoder(变分自编码器,简称VAE)的结合应用,特别是在自然语言处理领域...

    分布式系统架构资料合集

    在性能优化方面,两者都可能运用CDN(内容分发网络)加速静态资源的访问,利用分布式缓存和消息队列(如RabbitMQ或Kafka)来解耦系统并提升处理速度。在集群管理中,容器化技术(如Docker)和编排工具(如Kubernetes...

    jms英文书小合集

    6. **分布式系统中的应用**: 在分布式系统中,JMS常用于解耦应用程序组件,提高系统的可扩展性和健壮性。例如,通过消息队列,一个组件可以无阻塞地处理大量请求,而其他组件则在准备好处理这些请求时再从中取出消息...

    电信设备-微信元解耦合.zip

    例如,如果微信支付模块需要升级,解耦合允许只对支付模块进行改动,而不会波及其他服务。 2. **可扩展性**:随着用户量的增加,可以轻松添加新的服务器或服务来处理额外的负载,而无需大规模重构现有系统。 3. **...

    合集7、中台建设方法.docx

    23. **微服务中台实践**:微服务架构是实现中台灵活、解耦的重要手段,通过拆分服务,实现业务组件化,提高系统可扩展性。 24. **企业数据中台构建**:企业数据中台的构建涉及数据集成、清洗、存储、处理和分析等多...

    通信(高频)电子线路:第3章 选频网络2.ppt

    3.5.3章节深入解析了等效电路的概念,通过解耦合回路的电路方程,可以得到初级和次级回路的反射阻抗。反射阻抗总是表示能量损耗,并且其性质与原回路电抗性质相反。 3.5.4章节介绍了反射阻抗,它在回路谐振时呈现纯...

    组件化DEMO

    这种方式的好处在于解耦合,组件之间通过约定的URL协议进行通信,降低了直接依赖,增强了系统的灵活性。但是,过度依赖URL可能导致解析复杂,且不易于调试。 其次,Runtime(运行时)方式的组件化,主要是通过动态...

    面试中的设计模式的考察

    这种方式有助于解耦合,当创建逻辑变得复杂时,可以灵活应对。 2. 抽象工厂模式(Abstract Factory Pattern)属于创建型模式,它提供了一种方式,可以创建一系列相关或相互依赖的对象,而无需指定这些对象的具体类...

    基于springboot的甘肃非物质文化网站源码数据库.zip

    本项目采用MVC设计模式,即模型(Model)、视图(View)和控制器(Controller)三者分离,实现业务逻辑与界面显示的解耦合。SpringBoot负责控制器层,MyBatis处理数据访问,JSP处理视图渲染。 三、数据库设计 1. ...

    C#大纲资料-c.txt

    事件是C#中用于解耦合对象通信的机制,而委托则可以被视为函数指针。事件通常与委托一起使用,以实现事件发布者和订阅者之间的通信。 异常处理和调试 C#提供了强大的异常处理机制,可以有效地管理运行时错误。异常...

    大型网站体验优化之旅,微前端DevOps实践.pdf

    这种架构强调简洁、解耦的代码库,每个服务都能独立构建、部署和回退,同时也支持服务间通信和页面路由分发。然而,业界现有的微前端方案如Single-SPA、Web Components和Iframe各有优缺点,需要根据具体需求进行选择...

    ProgrammingParadigmsAllMaterials.zip

    5. **面向切面编程(AOP)**:AOP将关注点分离,让业务逻辑与系统服务(如日志、事务管理)解耦。AspectJ是一个著名的AOP框架。 6. **逻辑编程**:逻辑编程基于逻辑规则,如Prolog,程序由一系列的“如果-那么”...

    基于虚拟化技术的信息化系统服务器部署.doc

    在信息化系统中,传统的服务器部署模式通常是“一合服务器,一个应用程序”,这导致服务器资源利用率低下且管理复杂。随着信息化建设的快速发展,硬件设备数量增加,应用软件范围扩大,管理和维护成本日益增大。为...

    MGT:MGT

    在编程领域,尤其是前端开发中,模块管理是组织代码、提升可维护性和复用性的重要手段。MGT,虽然这个缩写没有明确的IT术语对应,但从上下文来看,我们可以将其理解为一个关于JavaScript模块管理的主题。JavaScript...

    基于Contourlet变换的高光谱图像分类研究

    高光谱遥感技术自20世纪80年代发展以来,已成为获取多维信息的关键手段。它通过连续的多个光谱波段捕获图像,使得图像同时包含了丰富的光谱和空间信息,实现了"图谱合一"。然而,由于高光谱图像数据量庞大且复杂,...

    MPS 电源EMI分析与优化设计研讨会讲义PP-教程与笔记习题

    MeshConnect技术是一种消除芯片中由键合线引起的寄生电感的技术,从而更好地控制EMI。芯片级EMI消除技术、集成EMI解耦电容的使用以及伪随机调制等都是MPS公司独有的先进技术。这些技术的应用有助于改善产品的EMI性能...

Global site tag (gtag.js) - Google Analytics