当前位置:科技动态 > Java学习记录:降低耦合度

Java学习记录:降低耦合度

  • 发布:2023-09-09 17:38

  • 耦合度定义

耦合度(Coupling)是对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。
模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。
降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的“牵一发动全身”的水波效应,保证系统设计顺利进行。

  • 降低耦合度意义

在初学的简单程序的编写中,高耦合度往往不被重视。类之间的变量传递按需求进行。但是当程序的规模变大,需求增多,高耦合度的程序不易作出修改,类之间的逻辑以及调用关系不明朗。降低耦合度就成了必要之举。

  • 降低耦合度的方法

    1.类监听器设计
    若要实现更新UI中组件的信息,我们常常这样做。



    但是一旦UI中的组件进行了修改,就会导致一连串调用了该组件的类无法使用,需要对其作出修改。两个类相互都有关联,这就是高耦合度,不利于程序进行修改完善。

    类监听器的设计方法可以实现界面以及接收器的分离。其基本流程如下。



    此方法可以实现界面以及接收器的分离,当改动接收器或者界面的时候,只需要改动部分代码。而且接收器可以同时分发给多个监听器,同样界面也可以加多个监听器,相较于之前的代码更加灵活。

  • 示例代码
    1.类监听器设计

www.sychzs.cn

public interface MListener {public void reciveMsg(String s);
}

www.sychzs.cn

import javax.swing.JTextArea;public class MJTextArea extends JTextArea implements MListener{private static final long serialVersionUID = 1L;public void reciveMsg(String s) {String msg = this.getText();msg += s; this.setText(msg);}
}

www.sychzs.cn

import java.util.ArrayList;
import java.util.List;public class NetConnector extends Thread{private List listeners = new ArrayList();public void addListener(MListener listener){listeners.add(listener);}public void fireMsgRecive(String s){for(int i = 0 ; i < listeners.size(); i++){listeners.get(i).reciveMsg(s);}}public void run(){int i = 0;while(true){try {Thread.sleep(3000);i++;} catch (InterruptedException e) {e.printStackTrace();}fireMsgRecive("Test"+i+"\n");}}
}

www.sychzs.cn

import java.awt.FlowLayout;
import java.awt.Font;
import javax.swing.JFrame;public class MainUI extends JFrame{private static final long serialVersionUID = 1L;public static void main(String[] args) {MainUI ui = new MainUI();NetConnector connector = new NetConnector();connector.start();MJTextArea text = new MJTextArea();connector.addListener(text);ui.setupUI(text);}public void setupUI(MJTextArea text){this.setTitle("Title");FlowLayout fl = new FlowLayout();this.setLayout(fl);this.add(text);text.setFont(new Font("楷体",30,30));this.setSize(800, 800);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}
}

相关文章