tsx81429 发表于 2025-4-5 07:25:58

明白“功能内聚”

链接:
  明白“偶尔内聚”
 明白“逻辑内聚”
 明白“时间内聚”
 明白“过程内聚”
 明白“通信内聚”
 明白“次序内聚”
 明白“功能内聚”
 
功能内聚(Functional Cohesion)是最高级别的内聚形式,指的是模块内的所有元素都紧密地围绕着一个单一的功能或使命进行设计。这意味着模块的所有构成部门都是为了完成这个特定的使命而存在的,并且这些部门之间具有非常强的逻辑关联性。功能内聚的模块通常是最小化、最专注的,易于明白、维护和重用。
 
 
功能内聚的特点:


[*]单一职责:模块专注于实现一个明白的功能或使命,确保其内部的所有操作都直接支持这一目的。
[*]高内聚度:由于模块的所有组件都是为了完成同一个使命而设计的,因此它们之间的接洽非常紧密,形成了高度的内聚性。
[*]清晰与简单:功能内聚的模块布局清晰,容易明白和使用,开发职员可以迅速把握其用途和工作原理。
 
 
功能内聚的长处

[*]可读性和可维护性高:因为模块只做一件变乱,代码更加简便明了,便于阅读和明白。
[*]易于测试:由于模块功能单一,边界条件相对较少,使得单元测试更加简单有用。
[*]良好的扩展性:如果需要增加新的功能,可以通过创建新的模块来实现,而不会影响现有的功能模块。
[*]重用性强:功能内聚的模块由于其专注性,每每可以在不同的上下文中被复用。
 
 
示例:用户登录验证
假设我们需要开发一个系统,其中包罗一个专门用于验证用户登录信息的功能模块 LoginValidator。该模块将负责查抄用户名和密码是否准确,以及账号是否被锁定等安全措施。所有这些功能都围绕着“验证用户登录”这一核心使命设计。
示例代码:
public class LoginValidator
{

    /**
   * 验证用户的登录尝试。
   *
   * @param username 用户名
   * @param password 密码
   * @return 返回 true 如果登录成功,否则返回 false
   */
    public boolean validateLogin(String username, String password)
    {
      // Step 1: 检查账户是否存在
      if (!accountExists(username))
      {
            System.out.println("Account does not exist.");
            return false;
      }

      // Step 2: 检查账户是否被锁定
      if (isAccountLocked(username))
      {
            System.out.println("Account is locked.");
            return false;
      }

      // Step 3: 验证密码
      if (!validatePassword(username, password))
      {
            incrementFailedLoginAttempts(username);
            System.out.println("Invalid password.");
            return false;
      }

      // Step 4: 重置失败登录尝试次数
      resetFailedLoginAttempts(username);

      System.out.println("Login successful.");
      return true;
    }

    private boolean accountExists(String username)
    {
      // 假设这里有一些逻辑来检查账户是否存在
      return "validUser".equals(username);
    }

    private boolean isAccountLocked(String username)
    {
      // 假设这里有一些逻辑来检查账户是否被锁定
      return false; // For simplicity, assume no accounts are locked.
    }

    private boolean validatePassword(String username, String password)
    {
      // 假设这里有一些逻辑来验证密码
      return "password123".equals(password);
    }

    private void incrementFailedLoginAttempts(String username)
    {
      // 假设这里有一些逻辑来增加失败登录尝试次数
    }

    private void resetFailedLoginAttempts(String username)
    {
      // 假设这里有一些逻辑来重置失败登录尝试次数
    }
} 在这个例子中,LoginValidator 类专注于实行与用户登录验证相关的使命。它包罗了几个辅助方法,如 accountExists, isAccountLocked, validatePassword, incrementFailedLoginAttempts, 和 resetFailedLoginAttempts,但所有这些方法都直接服务于主方法 validateLogin 的目的——验证用户登录信息的有用性。这正是功能内聚的一个典型例子。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 明白“功能内聚”