- 1、本文档共188页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ssh详解教程
同样的问题:需求变更? 现在,我们需要的不再是一个简单的BookFinder,我们需要的是一个能从本地文件系统中读取文件,并分析其中所包含的Book的内容,将其结果返回 因为我们遵守了面向接口编程,所以,我们只需要提供第二个实现即可 FileBookFinderImpl – 从文件系统读取Book的信息 public class FileBookFinderImpl implements BookFinder { public List findAll() { String file = “d:/test.txt”; List books = new ArrayList(); try { BufferedReader in = new BufferedReader(new FileReader(file)); String line = null; while( (line = in.readLine()) != null) { String[] sp = line.split(;); if(sp.length == 2){ … Book book = new Book(); book.setName(sp[0]); book.setAuthor(sp[1]); books.add(book); } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return books; } } 现在需要做什么? 我们的客户代码调用BookLister BookLister如何调用BookFinder?下面是以前初始化BookFinder的代码: public BookListerImpl() { finder = new SimpleBookFinderImpl(); } 现在,我们必须改动这段代码: public BookListerImpl() { finder = new FileBookFinderImpl(); } 看出问题来了吗? 严重违反面向对象的设计原则 BookLister接口的实现类严重依赖于BookFinder接口的实现类,这就是问题所在! 我们必须在BookLister的实现类和BookFinder的实现类之间进行解偶,即解除它们之间的实现类耦合关系(依赖!) 我们需实现以下目标: BookLister的实现类BookListerImpl不应该依赖于特定的BookFinder接口的实现类(比如SimpleBookFinderImpl或FileBookFinderImpl) BookLister的实现类,应该仅仅依赖于BookFinder接口,它不应该跟具体的功能需求实现相关(如,是否是从文件读取Book的信息) 总之,我们不应该让BookLister和BookFinder的实现类之间互相耦合! Spring让一切变得轻而易举 在BookListerImpl中定义一个setter方法 public void setFinder(BookFinder finder) { this.finder = finder; } 把BookListerImpl构造器中的new语句注释掉 public BookListerImpl() { //finder = new FileBookFinderImpl(); } 让Spring去关心那些烦人的依赖关系吧! Spring配置文件:ApplicationContext.xml 添加BookFinder定义 bean id=fileBookFinder class=com.bjsxt.spring.impl.FileBookFinderImpl“/ 修改BookLister定义的配置 bean id=bookLister class=com.bjsxt.spring.BookListerImpl property name=finder ref=“fileBookFinder / /bean 以上配置,即指定了BookListerImpl和FileBookFinderImpl之间的依赖关系,这种依赖关系,被放到了配置文件中,这样,只要需求有变更,只需要修改这种依赖关系即可,java代码本身不用任何变更 热门词汇:IOC/DI 控制反转(Inversion of Control,IoC)与依赖注
文档评论(0)