1.传统方式   UserService us = new UserService();  (UserService为一个java类,直接实例化成对象再进行操作)

                                                       

2.面向接口  UserService us = new UserServiceImp();  (UserService为一个接口,UserServiceImp为接口实现类)

                                   这样会导致web层和业务层产生耦合,程序设计应满足ocp原则

                                   此时,若我想切换实现类,则我需要在代码中将UserServiceImp修改掉

 

3.工厂模式  创建工厂类,通过工厂类返回对象    但此时接口和工厂类又会产生耦合                          

                                  此时,若我想切换实现类,则我需要在工厂类中将UserServiceImp修改掉

 

 4.  工厂 + 反射 +配置文件  实现解耦