分层设计与依赖查找

好比有一个生成验证码的功能,有两个需求,一个是要图片验证码,一个是要向短信发送验证码,两个需求的逻辑都可分为三个步骤:生成验证码,将验证码保存到session中,发送验证码。在第三步中,图片是以流的形式将验证码图片写到前台界面,短信是将验证码发送到手机上。如此看来,可将两种需求的逻辑抽象成一个接口,在此接口中定义一个创建验证码的方法,然后用一个抽象类来实现该接口,抽象类中将步骤一和步骤二实现了(用到了依赖查找,后面再说),然后步骤三是个抽象方法,最后图片和短信的实现类再来继承此抽象类实现第三个步骤。

现在来说依赖查找,在controller中注入一个map,value指定为创建验证码的总接口,spring会将接口的实现类放入map中(key为实例的名字,value为实例),现在map中就会有两个Entry对象(短信和图片的),然后就可以通过rest请求中的变量来决定使用哪一个生成器了。在抽象类中也同理注入了一个map,通过请求来生成不同的码生成器实现步骤一。

你可能感兴趣的:(分层设计与依赖查找)