解耦java_工厂模式实现解耦

解耦的含义

解耦的含义:降低程序之间的依赖性。

在实际开发中,应该做到编译期不依赖,运行时才依赖。

需求

我们有两个类UserService和UserDao,我们想实现UserService调用UserDao中的add方法。

原始方式,耦合度高

传统的操作是我们在UserService中new出来一个UserDao的对象,通过UserDao的对象调用add方法。

UserDao代码:

package com.Keafmd.spring5.test;

/**

* Keafmd

*

* @ClassName: UserDao

* @Description:

* @author: 牛哄哄的柯南

* @date: 2021-01-15 11:45

*/

public class UserDao {

public void add(){

System.out.println("add....");

}

}

UserService代码:

package com.Keafmd.spring5.test;

/**

* Keafmd

*

* @ClassName: UserService

* @Description:

* @author: 牛哄哄的柯南

* @date: 2021-01-15 11:45

*/

public class UserService {

public void execute(){

UserDao userDao = new UserDao();

userDao.add();

}

}

这种办法耦合度太高,如果UserDao的文件路径发生改变或者方法发生改变,那么我们的UserService也要相应的改变,不利于程序拓展。

工厂模式实现解耦

创建一个UserFactory类让这个类的getDao方法返回一个UserDao对象。然后让UserService调用UserFactory对象的getDao方法,来获取UserDao对象从而使用UserDao的方法。

目的:让耦合度降低到最低限度,不可能完全没有耦合。

UserDao代码:

package com.Keafmd.spring5.test;

/**

* Keafmd

*

* @ClassName: UserDao

* @Description:

* @author: 牛哄哄的柯南

* @date: 2021-01-15 11:45

*/

public class UserDao {

public void add(){

System.out.println("add....");

}

}

UserFactory代码:

package com.Keafmd.spring5.test;

/**

* Keafmd

*

* @ClassName: UserFactory

* @Description: User工厂类

* @author: 牛哄哄的柯南

* @date: 2021-01-15 11:59

*/

public class UserFactory {

public static UserDao getDao(){

return new UserDao();

}

}

UserService代码:

package com.Keafmd.spring5.test;

/**

* Keafmd

*

* @ClassName: UserService

* @Description:

* @author: 牛哄哄的柯南

* @date: 2021-01-15 11:45

*/

public class UserService {

public void execute(){

UserDao userDao = new UserFactory().getDao();

userDao.add();

}

}

虽然这样还是有耦合,但是已经降低了耦合度,再进一步降低就需要用到IOC,在此我们讲解的工厂模式就讲完了。

看完如果对你有帮助,感谢点赞支持!

如果你是电脑端,看到右下角的 “一键三连” 了吗,没错点它[哈哈]

1c6009fcb0612517d6e949958917648c.png

加油!

共同努力!

Keafmd

本文地址:https://blog.csdn.net/weixin_43883917/article/details/112655664

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值