工厂模式实现解耦
解耦的含义
解耦的含义:降低程序之间的依赖性。
在实际开发中,应该做到编译期不依赖,运行时才依赖。
需求
我们有两个类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...."); }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
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(); }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
这种办法耦合度太高,如果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...."); }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
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(); }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
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(); }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
虽然这样还是有耦合,但是已经降低了耦合度,再进一步降低就需要用到IOC,在此我们讲解的工厂模式就讲完了。
看完如果对你有帮助,感谢点赞支持!
如果你是电脑端,看到右下角的 “一键三连” 了吗,没错点它[哈哈]
加油!
共同努力!
Keafmd
文章来源: keafmd.blog.csdn.net,作者:牛哄哄的柯南,版权归原作者所有,如需转载,请联系作者。
原文链接:keafmd.blog.csdn.net/article/details/112655664
- 点赞
- 收藏
- 关注作者
评论(0)