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的表格语法为什么没有识别出来,效果有点差。
Beans的更多相关文章
- 可爱的豆子——使用Beans思想让Python代码更易维护
title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...
- beans.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 【解决方案】 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userHandler': Injection of resource dependencies failed;
一个错误会浪费好多青春绳命 鉴于此,为了不让大家也走弯路,分享解决方案. [错误代码提示] StandardWrapper.Throwableorg.springframework.beans.fac ...
- 利用beans.xml进行简单的Spring应用上下文创建与使用
继上次配置Spring完成后,我们来创建一个简单的例程来理解Spring中利用beans.xml创建应用上下文的方法. 程序路径包为:com.spring.kinghts(kinght单词拼写错误,怕 ...
- Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException:
严重: Exception sending context initialized event to listener instance of class org.springframework.we ...
- [转]spring beans.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- XML中<beans>中属性概述
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...
- java beans
There are N little kids sitting in a circle, each of them are carrying some java beans in their hand ...
- Hdu 2845 Beans
Beans Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- spring beans
所 有 使 用 XML 文 件 进 行 配 置 信 息 加 载 的 Spring IoC 容 器 , 包 括 BeanFactory 和ApplicationContext的所有XML相应实现,都使用 ...
随机推荐
- 基于C/S模式的android手机与PC机通信系统的开发
原文链接: http://blog.csdn.net/nupt123456789/article/details/8213486 基于C/S模式的android手机与PC机通信系统的开发 作者:郑海波 ...
- Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应
杂家前文Android颜色对照表只有颜色和十六进制,有时候需要设置r g b分量的int值,如paint.setARGB(255, 127, 255, 212);就需要自己计算下分量的各个值.这里提供 ...
- 找不到dubbo:annotaion错误
dubbo 2.8.4 出现找不到dubbo:annotation的错误,其实这个不会影响程序正确的运行,但是看到有红叉心里肯定非常不爽: 解决办法是,将dubbo-2.8.4.jar包,后缀改成.z ...
- 如何使用 Chrome 浏览器调试动态加载的 Javascript 脚本
在IE中,可以在调试程序的文档列表最下方看到一个"动态脚本"的文件夹,里面可以找到动态加载的脚本,但是...数量繁多,也不能自定义名称... 但是在 Chrome 中,貌似根本找不 ...
- Atitit Loading 动画效果
Atitit Loading 动画效果 使用才场景,加载数据,以及显示警告灯.. 要有手动关闭按钮 <div class="spinner loading_part" sty ...
- Android动画三部曲之中的一个 View Animation & LayoutAnimation
转载请注明出处:http://blog.csdn.net/crazy1235/article/details/50612827 本篇文章对android的Tween动画和帧动画以及布局动画进行总结. ...
- Linux的sysctl 命令参数详解
Linux内核通过/proc虚拟文件系统向用户导出内核信息,用户也可以通过/proc文件系统或通过sysctl命令动态配置内核.比如,如果我们想启动NAT,除了加载模块.配置防火墙外,还需要启动内核转 ...
- HTTPS演变小图
HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全.为了保证这些隐私数据能加密传输,网景公司设计了SSL(Se ...
- redhat 6、7配置yum源
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # sed -i ' ...
- hi模板文件报乱码问题
1.h5模板在: Templates\common 2.出现乱码的都在Templates\common\tags 局部视图里. 3.页面顶部有引用(skin-Common_SubmmitCartPr ...