什么是程序的耦合

什么是耦合

耦合性(Coupling),也叫耦合度,它是对模块间关联程度的度量。

在软件工程中,耦合指的就是对象之间的依赖关系。对象之间的耦合越高,则表明模块的独立性和可复用性越差,且维护成本越高。因此对象的设计应使类和构件之间的耦合最小。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则就是高内聚低耦合。

内聚和耦合

  • 内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。
  • 耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。 程序讲究的是低耦合,高内聚。就是同一个模块内的各个元素之间要高度紧密,但是各个模块之间的相互依存度却不要那么紧密。
class UserService{

	//UserDao userDao = new UserDaoImpl();
	UserDao userDao = BeanFactory.getBean("UserDao");
}

耦合的示例

初识耦合

我们在前面课程学习中,接触到最明显的一个因程序耦合而不得不改变的技术点就是JDBC操作的注册驱动:

/**
 * 程序的耦合演示
 */
public class JdbcDemo {

    /**
     * JDBC操作
     */
    public static void main(String[] args) throws Exception{
        //1.注册驱动
        //此处我们的代码中依赖了mysql的具体驱动实现,而实际开发中,当我们要更改数据库实现,就需要修改此处的源代码。
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        //2.获取连接
        //3.获取预处理对象
        //4.执行sql语句
        //5.处理结果集
        //6.释放资源
    }
}
实际开发中耦合具体体现
/**
 * 用户业务层接口
 */
public interface UserService {

    /**
     * 模拟保存用户
     */
    void save();
}	
/**
 * 用户业务层实现类
 */
public class UserServiceImpl implements UserService {

    /* 在我们使用三层架构作为开发基础时,层和层之间的调用,如果使用具体实现类就会出现内容依赖。
     * 在需要更换实现时,就需要修改源码,造成当前业务层功能的独立性很差。同时给我们维护带来极大不便。
     */
    private UserDao userDao = new UserDaoImplForOracle();
    //private UserDao userDao =  new UserDaoImplForMySQL();

    @Override
    public void save() {
        userDao.save();
    }
}

/**
 * 用户的持久层接口
 */
public interface UserDao {

    /**
     * 模拟保存用户
     */
    void save();
}
/**
 * 用户的持久层实现类
 */
public class UserDaoImplForMySQL implements UserDao {

    @Override
    public void save() {
        System.out.println("执行了保存用户 for MySQL");
    }
}
/**
 * 用户的持久层实现类
 */
public class UserDaoImplForOracle implements UserDao {

    @Override
    public void save() {
        System.out.println("执行了保存用户 for Oracle");
    }
}

你可能感兴趣的:(耦合,JDBC,设计模式)