欢迎来到天天文库
浏览记录
ID:34611772
大小:588.81 KB
页数:22页
时间:2019-03-08
《java ee architect background》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、IBM中国软件开发中心SelfIntroduction–InstructorShawnJiang(蒋林泉)WorkinginIBMfor7years.WebSphereApplicationServerCommunityEditionTechnicalLead.ApacheGeronimoPMCandcommitter.Leadauthorofbook“gettingstartedwithWASCE”Co-authorofbook“开源软件之道“6patentsowner(2filed,4publishe
2、d)©2009IBMCorporationIBM中国软件开发中心SelfIntroduction–Student–Introduceyourself–Internetknowledge–JavaandJavaEnterpriseknowledge–IBMWebSphereApplicationServerknowledge–InternetandWebtoolsyouuse(ordonotuse)–Whatyouhopetogetfromtheclass©2009IBMCorporationIBM中国软件开发中心容器思
3、想与JavaEE构架-应用服务器的工作原理篇作者:蒋林泉2009年4月©2009IBMCorporationIBM中国软件开发中心日程容器管理组件思想JAVEEE构架©2009IBMCorporationIBM中国软件开发中心松耦合系统的常用方法1用工厂设计模式,调用端用工厂来获取对象而不直接依赖实现类。2工厂设计模式结合外部Properties文件,调用端从工厂中得到的对象的实现类在Properties中指定,比方法1进一步解耦。3注册表模式,对象绑定在注册表中,调用端向注册表查找并使用对象,如JNDI。4反向依
4、赖注入(IOC),由容器自动把依赖的对象注入调用方。5©2009IBMCorporationIBM中国软件开发中心IoC要解决的问题组件之间的紧耦合复杂项目中的模块之间的依赖组件和容器之间的关系生命周期的管理分离组件的配置和使用好莱坞原则:“Don’tCallus,Wewillcallyou”模块1IoC容器模块1……....©2009IBMCorporationIBM中国软件开发中心例子PeelerJuicerFruit©2009IBMCorporationIBM中国软件开发中心一种实现publicclas
5、spublicclassPeeler{Fruit{privateFruitf;…publicPeeler(){f=newFruit();}}}©2009IBMCorporationIBM中国软件开发中心第一个问题publicclassFruit{publicclassPeeler{publicFruit(Suns)privateFruitf;publicPeeler(){{…}f=newFruit();}}}©2009IBMCorporationIBM中国软件开发中心改进,还是有紧耦合问题publicinterface
6、Importorange.packageFruit{publicclassPeeler{…privateFruitf;}publicPeeler(){publicclassOrangef=newOrange();implements}Fruit{}…}©2009IBMCorporationIBM中国软件开发中心解决方法思路:不在Peeler中构造Fruit对象,Peeler只需使用Fruit对象即可。publicclassPeeler{publicclassPeeler{privateFruitf;privateFr
7、uitf;publicPeeler(Fruitf){publicPeeler(){}this.f=f;publicvoid}setFruit(Fruitf){}this.f=f;}}Constructor-basedSetter-based©2009IBMCorporationIBM中国软件开发中心Container的加入JuicerJuicerPeelerPeelerContainercreatesOrangerOranger©2009IBMCorporationIBM中国软件开发中心一个简单的Containerpu
8、blicclassMyContainer{MyContainer(){PeelerJuicerFruitf=newOrange();Peelerp=newPeeler();Juicerj=newJuicer();Fruitp.setFruit(f);Containerj.setPeeler(p);j.doSomething;}}©
此文档下载收益归作者所有