zoukankan      html  css  js  c++  java
  • java中关于高聚合与松耦合

    把系统分为各个功能不同的板块,以电脑主机为例,高聚合就是指主板,cup等内的各种零件之间的紧密联系,松耦合就是指主板与cpu的连接,主板与显卡的连接,主板与电源的连接。把显卡,主板内的零件看作小号零件,这些小号零件组成了大号零件“显卡”和“主板”,小号零件之间的连接相比大号零件之间的连接更紧密。紧密的联系可以发挥出更高的性能(高聚合-高“性能高”,聚合-“联系紧密”),不那么紧密的联系便于灵活使用(松耦合-容易拼接的性能不错的接口)。简洁是常常提到的,相比说一大堆,高聚合,松耦合。有没有言简意赅?软件系统中的该发挥高性能的就弄成高聚合板块,需要更高的自由度的就考虑开一个松耦合接口,这就是我暂时的理解了。

    以下是关于模块的部分编写原则

    抽象原则(抽象:从具体事物抽出、概括出它们共同的方面、本质属性与关系等,而将个别的、非本质的方面、属性与关系舍弃,这种思维过程,称为抽象。--引用于百度百科)

    使用简洁精确的描述刻画模块的行为(或者功能),这种遵循抽象原则的模块刻画方式是“契约接口”(contractual interface)

    我们把一号模块看成是“服务提供者”,把使用一号模块的服务的其他模块(例如2号模块,3号模块)看作是1号模块的“客户”。把契约接口看成是服务提供者与客户之间的“服务约定”。服务约定只需要描述能够提供“什么”服务,而不是服务是“怎样”提供的。因此,也许提供的服务很复杂但也只是需要一份简单的服务契约就可以。由于具有简单的服务约定(服务契约),同是服务提供者保证遵守服务约定,因此客户要想使用复杂的服务,只需要理解简单的契约约定。约定接口允许客户使用服务而不需要关心服务的复杂性。也就是模块的复杂性被隐藏了。

    就像电话,不需要了解是怎么制作的就能轻松使用。

    封装原则

    实现模块功能的同时让模块约定接口与模块互不接触,以及对模块的客户来说是不可见的

    也叫信息隐藏原则。

    封装是为了减少模块间的耦合度,客户知道的模块实现的细节越少,模块和他的客户间的耦合度就越低。封装的一个重要好处是,如果客户只知道约定接口,就可以在不影响客户的情况下修改实现,条件是契约(约定)接口保持一致。

    电话服务为例,过去,信号是以模拟模式传输的,现在信号是以数字模式加密传输。尽管电话服务的实现方式改变了,但契约接口仍然保持一致。对电话用户来说,他们收到的唯一影响就是能够享受到更好的通话质量和更安全的通话传输。

    ——我的学习记录

  • 相关阅读:
    ehcache 的 配置文件: ehcache.xml的认识
    Hibernate的二级缓存(SessionFaction的外置缓存)-----Helloword
    QBC检索和本地SQL检索
    HQL的检索方式
    HQL的第一个程序
    Ubuntu Error: No module named 'apt_pkg' 怎么办?
    Linux 后台运行python .sh等程序,以及查看和关闭后台运行程序操作
    ubuntu install redis/mongo 以及 监控安装
    Mac 上的 redis
    Mac 解决硬盘插入不能写的问题
  • 原文地址:https://www.cnblogs.com/TheTop1/p/8800895.html
Copyright © 2011-2022 走看看