通过工厂类来创建对象,原来创建对象是直接 new,用工厂类创建对象可以解耦合
耦合:代码之间的强关联关系,一方的改变会影响另一方,不利于代码维护
解耦合:工厂类中的工厂方法来创建对象
这部分的耦合暂时被解决掉,工厂类中的耦合暂时未解决
直接调用构造方法,创建对象
通过反射的形式,创建对象
Class clazz = Class.forName("com.baizhi.UserServiceImpl");
UserService userService = (UserService) clazz.newInstance();
可以创建 properties 配置文件,再读取属性
private static Prorerties env = new Properties();
解耦合之后,想要使用新的 UserService,只需修改配置文件(这样的好处应该是修改一处,同步所有的地方?)
刚刚的简单的工厂设计存在一个问题:某一个对象需要解耦合,就需要提供对应的工厂方法,但是这些方法的结构和代码是一样的,会有大量冗余代码的出现。所以需要设计一个通用的工厂方法,从以下五个方面改造: