关于jsplet中的object生命周期的管理以及使用拉模式,如果套用现在流行的设计术语,那就是涉及到所谓的IoC设计(控制反转)
IoC的Container现在很受追捧, 但真正的IoC设计思想并没有引起大家的重视。也许大多数人使用的都是成品吧,以至于把成品的功能等价于其所依赖的设计原理。Spring等所建立的IoC更准确的说法是Dependency Injection,只是IoC的一种体现。其基本思想是一个对象并不控制所有与它相关的部分,而是把控制权交给使用对象的人。这里重要的就是控制流(信息流)的反转。
对象生命周期的管理也是这样,并不是由一个Manager猜测用户是否使用该对象,而是由用户直接标明他的态度,直接发出指令。
参考一下桌面应用中的资源控制手段,我们打开一个窗口,与系统进行交互,此时占用资源,关闭窗口,则该窗口以及其子窗口所占用的资源都释放。在jsplet中对象控制策略类似。当用户从某个功能区退出的时候,即当用户访问其它scope中对象而放弃当前objectScope的时候,开始做资源清理工作。即用户的行为和意向直接驱动着系统的对象管理层。当然,如果用户一直不发出调用,那么系统只能猜测用户的行为,用户是否已断线或者正在思考?在这种情况下,如果控制资源,则需要通过AOP给thisObj 加上类似EJB的功能。
IoC的Container现在很受追捧, 但真正的IoC设计思想并没有引起大家的重视。也许大多数人使用的都是成品吧,以至于把成品的功能等价于其所依赖的设计原理。Spring等所建立的IoC更准确的说法是Dependency Injection,只是IoC的一种体现。其基本思想是一个对象并不控制所有与它相关的部分,而是把控制权交给使用对象的人。这里重要的就是控制流(信息流)的反转。
对象生命周期的管理也是这样,并不是由一个Manager猜测用户是否使用该对象,而是由用户直接标明他的态度,直接发出指令。
参考一下桌面应用中的资源控制手段,我们打开一个窗口,与系统进行交互,此时占用资源,关闭窗口,则该窗口以及其子窗口所占用的资源都释放。在jsplet中对象控制策略类似。当用户从某个功能区退出的时候,即当用户访问其它scope中对象而放弃当前objectScope的时候,开始做资源清理工作。即用户的行为和意向直接驱动着系统的对象管理层。当然,如果用户一直不发出调用,那么系统只能猜测用户的行为,用户是否已断线或者正在思考?在这种情况下,如果控制资源,则需要通过AOP给thisObj 加上类似EJB的功能。