第一课 Junit测试相关讲解
1.Junit使用
① Junit 测试组合
即把所有的AllTest都包在总的AllTest里面,而每一个不同的包里的AllTest又包含各自包里所有的测试,故一次就能运行所有的测试。这种Suite的实际模式实际上就是组合模式。
② 用mock对象进行测试
3.对遗留代码进行测试
第二课上
构造了一个最基本的BeanFactory,并且实现了Create时候的出错处理
第二课下
1.改进BeanFactroy
根据单一职责原则,把原本在loadBeanDefinition中的对xml的解析抽取出来,放在一个单独的类,并且给BeanFactory增加接口,接收xml读取到的BeanDefinition,如图示
缺陷:BeanDefinition是内部的概念,而BeanFactory是给客户调用的接口,内部的概念应该由专门的接口来处理,不应暴露在外面。改进后如图示
2.把BeanFactory隐藏起来,包装成接口ApplicationContext来提供给用户调用
因为用户一般不会直接调用底层的BeanFactory,所以要包装一个ApplicationContext来提供给用户使用
3.提取不同的ApplicationContext的共同点Resouce进行封装
比如FileSystem和ClassPathXmlApplicationContext的区别在于获取xml文件方式的不同,但它们获取到以后,都要把xml文件编程inpustream送去解析,因此提取出了这个共同的inpustream,用Resouce类来操作。
PS:这里的实现与Spring的不一样,Spring还抽象了一个DefaultResourceLoader,提供了一个可以默认为FileSystem或者是ClassPath的获取XML方式的方法。
自身实现:
Spring实现:
4.实现FileSystemXmlApplicationContext
由于FileSystemXml与ClassPathXml非常相似,故getResourceByXXPath()方法代码有大部分交叉,只有一部分不同,所以要抽象一个template来解决代码重复的问题。
5.从外界引入ClassLoader
要从外面引入ClassLoader,又不能直接放在供给用户使用的BeanFactory,要增加一个可设置ClassLoader的接口。
6.获取Bean的单例模式
在Spring有scope字段为判断是否单例,默认为“singleton”。