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