1.反向控制 IoC(Inversion of Control):就是將對象的建立和獲取提取到外部。由外部容器提供須要的組件。javascript
其中組件分爲兩部分:1.Service,所提供功能的聲明;2.Implementation,Service的實現;java
優勢:多實現能夠任意切換,防止具體依賴具體;算法
Framework:Framework是爲服務器端解決方案設計的;
1). 一個支持性的或封閉性的結構;2). 包含思想的一個基本系統或一種安排編程
框架:安全
1).垂直市場框架:一樣的框架不能勝任其它行業;服務器
2).水平市場框架:可用於多個行業的框架;併發
Avalon是一個水平市場框架。您可使用Avalon的Framework構建垂直市場框架;框架
Java已經有了一個構建GUI的框架,稱爲Swing;工具
若是項目未來運行在一個服務器環境中,那麼Avalon是OK的,不管是用來建立一個java servlet仍是一個特殊用途的服務器應用;可是並不適合一個未來運行在客戶機上而且與服務器沒有交互的項目;oop
2.原理:反向控制and分離考慮
1).反向控制(Inversion of Control):IOC指組件老是由外部進行管理,組件所需的一切經過Contexts、Configurations和Loggers的方式賦予組件。實際上,組件生命週期中的每一個階段都是由建立組件的代碼所控制的。當開始使用這種模式時,就實現了一種組件與本身的系統安全交互的方法。IOC不等價於安全性,IOC只是實現安全性的工具;
作到安全:每一個組件都必須安全,沒有組件能夠修改傳遞給它們的對象的內容,並且全部的交互都必須使用已知的實體。
2).分離考慮(Separation of Concerns):SOC即應該從不一樣的思考方向看待本身的系統。
。分離考慮模式又致使了Aspect Oriented Programming (AOP)
2.。面向方面編程:Aspect Oriented Programming (AOP)
研究者發現許多考慮不能在類或方法的粒度上進行處理。這些考慮被稱爲aspect。aspect的例子包括管理對象的生命週期、記日誌、處理異常和清理釋放資源等。因爲沒有一種穩定的AOP實現,Avalon開發團隊選擇經過提供一些小的接口,而後由組件來實現,從而實現aspect或考慮。
1).面向組件的編程(Component Oriented Programming ,COP):cop是把系統分割成一些組件或設施的一種思想。每種設施都有一個工做接口和圍繞該接口的契約。這種方式容許容易地更換組件的實例,同時不影響系統其它部分的代碼。
好處:COP的主要好處之一是修改項目代碼的一些部分不會破壞整個系統。另外一個好處是能夠有某組件的多種實現,並能夠在運行時刻進行選擇。
與oop差別:面向對象編程(Object Oriented Programming ,OOP)和COP的主要區別在於集成的層次。COP系統的複雜性更容易管理,這得益於類之間更少的相互依賴。這提升了代碼重用的程度。
2).面向服務的編程(Service Oriented Programming ,SOP):sop的思想是把系統劃分爲由系統提供的一些服務
好比這些服務:1. 爲其它人執行的工做或職責 ;2. 提供修理或維護的一種設施 ;3. 向公衆提供工具的一種設施;
把每一種要提供的設施看做是一項服務,由特定接口和相關契約組成。服務的實現被稱爲Block。一個服務器程序是由多種服務組成的,認識這一點很重要。好比:以郵件服務器爲例,它會有協議處理服務、認證和受權服務、管理服務和核心郵件處理服務等。
從實踐經驗上來講,一個定義良好的面向消息的系統在可擴展性方面要強於面向對象的系統(如EJB)。可擴展性更好的一個緣由是消息一般併發內存開銷較小。另外一個緣由是它更容易把消息處理的負載分散到全部服務器上去,而不是把全部的處理集中在少許的服務器集羣上(甚至是在一臺服務器上)。
把組件視爲一個服務或設施的模型,而不是數據的模型;
若是一個潛在組件的邏輯將被一致地應用,那麼將它做爲一個組件多是有意義的。
在一個系統中能夠有一個組件的多個實例,它們能夠在運行時進行選擇。
若是潛在組件的邏輯只是根據另一個組件來肯定的,也許能夠把這些邏輯放到另外的那個組件中去。
Cache是一個短時間內存中的存儲設施。DocumentRepository將用它來保存Document對象,並經過一個散列算法來引用。爲了提升Cache組件的可重用性,存儲的對象必須實現一個Cacheable接口。