APP下载

浅谈Java程序中对象解耦的方式

2019-09-10刘翠霞

科学导报·科学工程与电力 2019年38期
关键词:耦合

【摘  要】对象之间的耦合度就是对象之间的依赖性。对象之间的耦合度越高,表明对象独立性越差,维护成本就越高。因此在面向对象的软件开发中应尽量降低对象的耦合度,即解耦。在Java中可以使用接口、工厂模式、Spring框架等来降低对象间的耦合度。

【关键词】耦合;解耦;工厂模式;Spring框架

一、Java对象的耦合性

对象的耦合性即对象的依赖性。在一个对象的工作过程中,需要使用另一个对象,则称之为依赖另一个对象。使用传统的new关键字创建对象会造成对象之间较高的依赖性。例如:

public class UserJDBCDao{

public void login(){……}

}

public class UserLoginServlet{

public UserJDBCDao  userDao=new UserJDBCDao();

public void doPost(){

userDao.login();

}

}

在以上代碼中,UserLoginServlet依赖于UserJDBCDao,如果UserJDBCDao使用的技术需要更换,则可能创建新的UserMyBatisDao来替换原有的UserJDBCDao,则以上代码中UserJDBCDao就需要被替换为UserMyBatisDao。如果项目中有多个Servlet组件都使用了UserJDBCDao,则需要替换多次需要调整的代码可能比较多,通常称之为“耦合度太高”。

二、使用接口解耦

为了降低以上程序的耦合度,可以使用接口技术。即创建如下接口:

public interface UserDao{

void login();

}

然后,使得UserJDBCDao和UserMyBatisDao两个类都实现以上接口,则后续需要使用Dao对象时,可以声明为:

public userDao=new UserJDBCDao();

则后续需要替换时,该对象的声明语句不用调整,只替换等号右侧构造方法名字即可,一定程度上降低了对象间的耦合度。

三、使用工厂模式解耦

可以使用设计模式中的工厂模式降低耦合度。可以创建如下的工厂类:

public class UserDaoFactory{

public static UserDao newInstance(){

return new UserJDBCDao();

}

}

则此前的代码可以进一步调整为:

public UserDao userDao=UserDaoFactory.newInstance();

以上代码中根本就没有出现某个实现类的名称,如果需要替换实现类,以上代码根本就不需要调整。需要调整的只有工厂类中的方法的返回值,而工厂类的修改只需要一次即可。可以称之为“UserLoginServlet不依赖于UserJdbcDao或UserMyBatisDao”,也就解除了三者之间的耦合。

四、使用Spring框架解耦

可以将Spring框架理解为一个大型工厂,专门用于创建和管理项目中所需要的类的对象。当需要使用某个对象时,从Spring框架中获取即可。使用Spring的关键步骤有三步:

(一)导包

在pom.xml文件在pom.xml中添加org.springframework的spring-webmvc依赖进行导包。代码如下:

<dependency>

<groupId>org.springframeword</groupId>

<artifactId>spring-webmvc</artifactId>

<version>4.3.8.RELEASE</version>

</dependency>

(二)配置Spring

假设需要通过Spring创建Date类的对象,则在Spring配置文件(默认文件名是applicationContext.xml)中添加如下配置:

<bean id="date" class="java.util.Date"></bean>

其中:

1.bean元素:使用该元素描述需要Spring容器管理的对象。

2.id属性:给被管理的对象起个名字,后续可使用getBean("id值")获取该对象。

3.class属性:被管理对象的完整类名。

(三)通过Spring获取对象

1.加载Spring配置文件,获得Spring容器

ClassPathXmlApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");

2.从spring容器中获取对象

Date date=(Date)ac.getBean("date");

“高内聚、低耦合”是每个程序员追求的目标,随着编程技术的发展,必将有更多更好的方法来降低程序耦合性,程序解耦方法的研究还需要不断深入。

参考文献:

[1]肖睿,肖静,董宁.SSM轻量级框架应用实战[M].北京:人民邮电出版社,2018.

[2]CSDN博客.程序的耦合和解耦思路 [EB/OL].https://blog.csdn.net/qq_40867650/article/details/102825262,2019-10-30.

作者简介:

刘翠霞,女,中共党员,信息学院软件教研室主任,高级工程师,工程硕士。研究方向:高职教育,软件开发。在研课题《“互联网+”背景下高职课堂革命的探究与实践》。

(作者单位:石家庄财经职业学院)

猜你喜欢

耦合
区域生态脆弱性与贫困的耦合关系
高效降解菌耦合颗粒生物活性炭处理印染废水
小学智慧课堂双螺旋耦合模型及其设计
无线输电系统中耦合线圈对传输效率的影响
山东省新型城镇化和物流发展水平耦合研究
保偏光纤熔融焊接导致的交叉偏振耦合的简单评估
新疆人口与经济耦合关系研究
新疆人口与经济耦合关系研究
电感耦合等离子发射光谱法快速测定对苯二甲酰氯中氯化亚砜残留量
多接受电感耦合等离子质谱法准确测定天然地质样品中的锂同位素组成