简化java_JAVA之旅-简化java开发
為了降低java開發(fā)的復雜性,spring采取了以下4種關鍵策略
基于POJO的輕量級和最小侵入行編程
為使不讓應用與框架綁死,一個bean不會實現(xiàn),繼承或者導入Spring API相關的任何東西,只是一個普通的java對象。
2. ?通過依賴注入和面相接口實現(xiàn)松耦合
每個對象負責管理與自己相互協(xié)作的對象(即它所依賴對象)的引用,這將會導致高度耦合和難以測試的代碼。
高度耦合的意思是一個類要管理自己的對象,
public class PerformShow implementsPerform{privateStar star;publicPerformShow() {this.star = newSuperStar();
}
}
這是典型的例子,這會使
內(nèi)部對象實例可更改性很差,而且功能過于單一。
單元測試可很難做,究其原因是無法方便的取出內(nèi)部對象star.
改造方法是利用依賴注入實現(xiàn)松耦合。分為構造器注入和setter注入兩種。
public class PerformShow implementsPerform{privateStar star;//constructor
publicPerformShow(Star star) {this.star =star;
}//for setter property
public voidsetStar(Star star) {this.star =star;
}
}
通過注入,其實就是下面這個樣子,但是這里面有幾個需要注意的。
這個單元測試就很好做了,因為我們有有了start這個對象了。
類內(nèi)部的對象和執(zhí)行方法多變,以前只能限制成SuperStar這個類。現(xiàn)在什么明星只要實現(xiàn)Star接口的都可以。這個也是松耦合的意思,就是以接口實現(xiàn)傳遞,降低耦合關系。
其實基于xml和注解的注入方式都和這個類似,就是方式不一樣罷了。
Star star = newSuperStar();
Perform perform= new PerformShow(star);
DI:對象的依賴關系將由負責協(xié)調系統(tǒng)中各個對象的第三方組件在創(chuàng)建時設定。對象無需自行創(chuàng)建或管理它們的依賴關系。
用xml的寫法如下。
利用上下文把其加載進來,這樣就做到perform接口不知實現(xiàn)類是誰,也不知其內(nèi)部的star接口是怎樣的明星,實現(xiàn)松耦合。
ApplicationContext context = new ClassPathXmlApplicationContext("spring-injection-init-destroy.xml");
Perform performconstructor= (Perform)context.getBean("performconstructor");
3. ? 基于切面和慣例進行聲明式編程(aop)
依賴注入讓相互協(xié)作的軟件組件保持松散耦合,而aop變成允許把遍布應用各處的功能分離出來形成可重用的組件。
諸如日志、事務管理和安全此類的系統(tǒng)服務經(jīng)常融入到自身核心業(yè)務邏輯的組件中去,這些系統(tǒng)服務通常是橫切關注點,它們不屬于任何一個業(yè)務組件,這是就需要aop編程。
這樣可以是組件更加關心自身的業(yè)務和有很高的內(nèi)聚性。
public class FamilyCui implementsFamily {privateMember member;publicFamilyCui(Member member) {this.member =member;
}public voiddoSomething (){
member.doJob();
}
}public classFamilyLog {public voidbeforFun(){
System.out.println("想知道孩子們在干啥!");
}public voidafterFun() {
System.out.println("哦,我知道了");
}
}
首先我們有一個Family類,我們要把他的方法作為切入點,那我們就需要一個類FamilyLog,然后定義我們的切片方法beforeFun和afterFun,并聲明在切入點的什么時候用。
4. ? 通過切面和模版減少樣板式代碼
這個很好理解,以JDBC為例,在實質的代碼前要有好多的開啟關閉動作,用spring可以搞定這些。
總結
以上是生活随笔為你收集整理的简化java_JAVA之旅-简化java开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 时间管理app,时间管理
- 下一篇: 如何成为android开发工程师,and