Beans
PHP之所以被人稱為“世界上最好的語言”,很大程度上是因?yàn)閷W(xué)會(huì)語法后就可以直接運(yùn)用其開發(fā)Web應(yīng)用了吧,而Java基本上不可能。在Java的語言特性的背后,還拖著由Sun公司和社區(qū)搞出的一大堆理論和框架,用以支撐所謂的“企業(yè)級(jí)開發(fā)”。有多少Java程序員終生淹沒在“SSH”三大框架下,跳不出來。
這些理論,其實(shí)都很好,理論指導(dǎo)實(shí)踐嘛!只是對(duì)于初學(xué)者來說,學(xué)習(xí)曲線比較陡峭。
JavaBeans是Java的JDK直接提供的一種組件式開發(fā)架構(gòu)。具體的概念在此不詳述了,有興趣的直接看文檔http://docs.oracle.com/javase/6/docs/api/java/beans/package-summary.html。
在該文檔中,簡(jiǎn)要闡述了JavaBeans的概念。同時(shí),根據(jù)包結(jié)構(gòu),我們可以初步分析一下如果要用PHP來實(shí)現(xiàn)這樣一個(gè)特性,需要寫哪些代碼。
接口
| [AppletInitializer] | 此接口設(shè)計(jì)用于與 java.beans.Beans.instantiate 聯(lián)合使用。 |
| [BeanInfo] | 希望提供有關(guān)其 bean 的顯式信息的 bean 實(shí)現(xiàn)者可以提供某個(gè) BeanInfo 類,該類實(shí)現(xiàn)此 BeanInfo 接口并提供有關(guān)其 bean 的方法、屬性、事件等顯式信息。 |
| [Customizer] | customizer 類提供一個(gè)用來自定義目標(biāo) Java Bean 的完全自定義 GUI。 |
| [DesignMode] | 此接口由 java.beans.beancontext.BeanContext 的實(shí)例實(shí)現(xiàn)或委托,以便將當(dāng)前的 "designTime" 屬性傳播到 java.beans.beancontext.BeanContextChild 實(shí)例的嵌套層次結(jié)構(gòu)。 |
| [ExceptionListener] | ExceptionListener 是在發(fā)生內(nèi)部異常時(shí)獲得通知。 |
| [PropertyChangeListener] | 無論 bean 何時(shí)更改 "bound" 屬性,都會(huì)激發(fā)一個(gè) "PropertyChange" 事件。 |
| [PropertyEditor] | PropertyEditor 類為希望允許用戶編輯某個(gè)給定類型的屬性值的 GUI 提供支持。 |
| [VetoableChangeListener] | 只要 bean 更改 "constrained" 屬性,都將會(huì)激發(fā)一個(gè) VetoableChange 事件。 |
| [Visibility] | 在某些情況下,bean 可能運(yùn)行在 GUI 不可用的服務(wù)器上。 |
類
| [BeanDescriptor] | BeanDescriptor 提供有關(guān) "bean" 的全局信息,其中包括其 Java 類、其 displayName 等等。 |
| [Beans] | 此類提供一些通用的 bean 控制方法。 |
| [DefaultPersistenceDelegate] | DefaultPersistenceDelegate 是 PersistenceDelegate 抽象類的具體實(shí)現(xiàn),是沒有關(guān)于其可用信息的類在默認(rèn)情況下使用的委托。 |
| [Encoder] | Encoder 是這樣的類,它可用于創(chuàng)建根據(jù)其公共 API 對(duì) JavaBeans 集合狀態(tài)進(jìn)行編碼的文件或流。 |
| [EventHandler] | EventHandler 類為動(dòng)態(tài)生成事件偵聽器提供支持,這些偵聽器的方法執(zhí)行一條涉及傳入事件對(duì)象和目標(biāo)對(duì)象的簡(jiǎn)單語句。 |
| [EventSetDescriptor] | 描述給定 Java bean 激發(fā)的一組事件的 EventSetDescriptor。 |
| [Expression] | Expression 對(duì)象表示基本表達(dá)式,其中將單個(gè)方法應(yīng)用于某一目標(biāo)和一組參數(shù),以返回結(jié)果,與在 "a.getFoo()" 中一樣。 |
| [FeatureDescriptor] | FeatureDescriptor 類是 PropertyDescriptor、EventSetDescriptor 和 MethodDescriptor 等的公共基類。 |
| [IndexedPropertyChangeEvent] | 無論何時(shí)遵守 JavaBeans 規(guī)范的組件("bean")更改綁定 (bound) 索引 (indexed) 屬性,都會(huì)提交一個(gè) "IndexedPropertyChange" 事件。 |
| [IndexedPropertyDescriptor] | IndexedPropertyDescriptor 描述了類似數(shù)組行為的屬性,且有一種訪問數(shù)組特定元素的索引讀和/或索引寫方法。 |
| Introspector | Introspector 類為通過工具學(xué)習(xí)有關(guān)受目標(biāo) Java Bean 支持的屬性、事件和方法的知識(shí)提供了一個(gè)標(biāo)準(zhǔn)方法。 |
| MethodDescriptor | MethodDescriptor 描述了一種特殊方法,即 Java Bean 支持從其他組件對(duì)其進(jìn)行外部訪問。 |
| ParameterDescriptor | ParameterDescriptor 類允許 bean 實(shí)現(xiàn)者提供除 java.lang.reflect.Method 類提供的低級(jí)別信息之外的關(guān)于其每個(gè)參數(shù)的額外信息。 |
| PersistenceDelegate | PersistenceDelegate 類負(fù)責(zé)根據(jù)類的公共 API 中的方法表示給定類的實(shí)例狀態(tài)。 |
| PropertyChangeEvent | 無論 bean 何時(shí)更改 "bound" 或 "constrained" 屬性,都會(huì)提交一個(gè) "PropertyChange" 事件。 |
| PropertyChangeListenerProxy | 擴(kuò)展 EventListenerProxy 的類,特別適用于添加指定的 PropertyChangeListener。 |
| PropertyChangeSupport | 這是一個(gè)實(shí)用工具類,支持綁定 (bound) 屬性的 bean 可以使用該類。 |
| PropertyDescriptor | PropertyDescriptor 描述 Java Bean 通過一對(duì)存儲(chǔ)器方法導(dǎo)出的一個(gè)屬性。 |
| PropertyEditorManager | PropertyEditorManager 可用于查找任何給定類型名稱的屬性編輯器。 |
| PropertyEditorSupport | 這是一個(gè)幫助構(gòu)建屬性編輯器的支持類。 |
| SimpleBeanInfo | 這是一個(gè)使得用戶提供 BeanInfo 類更容易的支持類。 |
| Statement | Statement 對(duì)象表示基本語句,其中將單個(gè)方法應(yīng)用于某一目標(biāo)和一組參數(shù),以返回結(jié)果,比如 "a.setFoo(b)"。 |
| [VetoableChangeListenerProxy] | 擴(kuò)展 EventListenerProxy 的類,特別適用于將 VetoableChangeListener 與 "constrained" 屬性相關(guān)聯(lián)。 |
| [VetoableChangeSupport] | 這是一個(gè)實(shí)用工具類,支持約束 (constrained) 屬性的 bean 可以使用此類。 |
| [XMLDecoder] | XMLDecoder 類用于讀取使用 XMLEncoder 創(chuàng)建的 XML 文檔,用途類似于 ObjectInputStream。 |
| [XMLEncoder] | XMLEncoder 類是 ObjectOutputStream 的互補(bǔ)替換,可用于生成 JavaBean 的文本表示形式,所使用方式與用 ObjectOutputStream 創(chuàng)建 Serializable 對(duì)象的二進(jìn)制表示形式的方式相同。 |
異常
| [IntrospectionException] | 在 Introspection 期間發(fā)生異常時(shí)拋出異常。 |
| [PropertyVetoException] | 當(dāng)某一屬性的提議更改表示一個(gè)不可接受的值時(shí),將拋出 PropertyVetoException。 |
注解類型
| [ConstructorProperties] | 關(guān)于構(gòu)造方法的注釋,用來說明該構(gòu)造方法的參數(shù)如何與被構(gòu)造對(duì)象的獲取方法相對(duì)應(yīng)。 |
參照這個(gè)結(jié)構(gòu),有沒有興趣實(shí)現(xiàn)一套PHPBeans?在正統(tǒng)的基于類的面向?qū)ο蟮乃季S下,語言的界限可以試著去消除,尤其PHP已經(jīng)進(jìn)步了這么多。
不知道m(xù)arkdown的表格語法為什么沒有識(shí)別出來,效果有點(diǎn)差。
總結(jié)
- 上一篇: 【object-c基础】Object-c
- 下一篇: Java中反射机制(Reflection