1.情景展示
如上图所示,每个服务层都需要注入这个工具类对象
2.原因分析
如果我们每个实现类都加上这样一行代码,实属麻烦;
既然每个类都需要,那我们就可以把它视为公共属性,为了承载这个公共属性,我们就需要创建一个父类,在java中,父类通常是一个抽象类。
3.解决方案
将公有属性放到父类中,接口实现类作为子类继承父类。
这里需要说明的有两点:
第一,抽象类也可以使用spring注解完成对象的注入;
第二,通常我们在一个类中注入对象时,会将该属性私有化,也就是使用private修饰,这样一来该属性会变成类的私有属性,也就是该属性只能在该类中被调用;显然,用到这里不合适,因为我们需要它的子类也能访问得到该属性,所以使用protected修饰。
子类使用继承该类后,就可以直接使用这个属性啦
使用父类的另一个好处是:方便后期扩展公有属性和方法
4.测试
对象czUrlUtils能够正常获取到。
5.扩展
对于几个个别的接口,仅仅依赖czUrlUtils对象工具类是不够的,比如还需要另外两个工具类
我们可以把这两个抽出来再作为一个公共类的属性,将公共类作为父类,父类继承上面的那个父类
该实现类继承新生成的父类。