当前位置: 首页 > news >正文

wordpress指定分类广告金融网站排名优化

wordpress指定分类广告,金融网站排名优化,建设网站前的市场分析包括哪些内容,建筑工程有限公司起名大全基于jsf的项目用JSF编写的Web应用程序由相互交互的bean组成。 在开发Web应用程序时#xff0c;bean之间的通信是主要的设计模式之一。 有时#xff0c;一个bean需要将事件发送给其他bean#xff0c;以通知它们某些更改或其他任何更改。 通常#xff0c;我们可以将托管bean或… 基于jsf的项目 用JSF编写的Web应用程序由相互交互的bean组成。 在开发Web应用程序时bean之间的通信是主要的设计模式之一。 有时一个bean需要将事件发送给其他bean以通知它们某些更改或其他任何更改。 通常我们可以将托管bean或Spring bean注入另一个bean的属性中以便另一个bean可以直接通知注入的bean。 注入是好的但是它并不是出于交流目的而引入的。 它与每个豆都不知道其他Bean的动态松耦合系统相距甚远。 在松耦合系统中我们需要一个良好的基于​​事件的通信机制。 这篇文章将涵盖两种设计模式观察者/事件监听器和中介者模式。 这些模式如今已在许多Web应用程序中广泛使用但是它们具有缺点。 该系统并不是真正与它们松散耦合。 有很多更好的现代方法。 因此我在帖子名称中写了“ Old-school approach”。 新学校的方法将在下一篇文章中公开。 观察员/事件听众   我们将从观察者也称为事件监听器模式开始。 一个称为主题或可观察对象的对象会维护其依赖项的列表称为观察者并自动将状态变化通知他们。 在Java中有类java.util.Observer和java.util.Observable可以帮助实现此模式。 通过此模式进行的基于事件的通信的其他相关构造是类java.util.EventObject和接口java.util.EventListener。 让我们开始编码。 假设我们有一个I18N Web应用程序并且用户可以在用户设置中的某处选择一种语言语言环境。 假设我们有一个名为UserSettingsForm的bean它负责用户设置。 某些会话作用域的Bean可以保留I18N文本/消息因此当用户更改当前语言时需要以最后选择的语言重置以前的文本/消息。 首先我们需要一个LocaleChangeEvent。 public class LocaleChangeEvent extends EventObject {Locale locale;public LocaleChangeEvent(Object source, Locale locale) {super(source);this.locale locale;}public Locale getLocale() {return locale;} } 其次我们需要一个接口LocaleChangeListener。 public interface LocaleChangeListener extends EventListener {void processLocaleChange(LocaleChangeEvent event); } 我们的UserSettingsForm现在可以通过注册字符串并通知它们来管理LocaleChangeListener类型的实例。 ManagedBean SessionScoped public class UserSettingsForm implements Serializable {private Locale selectedLocale;private ListSelectItem locales;private ListLocaleChangeListener localeChangeListeners new ArrayListLocaleChangeListener();public void addLocaleChangeListener(LocaleChangeListener listener) {localeChangeListeners.add(listener);}public void localChangeListener(ValueChangeEvent e) {...// notify listenersLocaleChangeEvent lce new LocaleChangeEvent(this, this.selectedLocale);for (LocaleChangeListener lcl : localeChangeListeners) {lcl.processLocaleChange(lce);}}... } 方法localChangeListener是JSF ValueChangeListener可以在例如hselectOneMenu中应用。 每个实现LocaleChangeListener的bean都应该由UserSettingsForm注册以便通过语言环境更改得到通知。 ManagedBean SessionScoped public MyBean implements LocaleChangeListener, Serializable {// UserSettingsForm can be injected e.g. via ManagedProperty annotation or via Spring facilityprivate UserSettingsForm userSettingsForm;PostConstructpublic void initialize() {userSettingsForm.addLocaleChangeListener(this);}public void processLocaleChange(LocaleChangeEvent event) {// reset something related to I18N data...} } 根据观察者模式UserSettingsForm是可观察的而LocaleChangeListener的实例如MyBean是观察者。 讨论的模式带有一些您需要注意的重要问题。 豆紧密耦合。 有很多手动工作来重新注册bean。 Bean必须实现定义的接口。 如果您有一个通过100个语义不同的更改通知的bean则它必须实现100个接口。 无法通知已注册的侦听器的子集–即使不需要通知所有侦听器也总是会通知他们。 最后但并非最不重要的– 内存管理问题 。 马丁·福勒Martin Fowler写道 “假设我们有一些观察某些域对象的屏幕。 关闭屏幕后我们希望将其删除但是域对象实际上通过观察者关系携带了对屏幕的引用。 在内存管理的环境中寿命长的域对象可能会占据很多僵尸屏幕从而导致大量内存泄漏。” 调解员   与“观察者/事件侦听器”模式相比“中介者”模式改善了基于事件的通信。 使用中介者模式对象之间的通信将与中介者对象一起封装。 对象不再彼此直接通信而是通过调解器进行通信。 这减少了通信对象之间的依赖性。 我们将看到它如何用于JSF-Spring Bean在上面的示例中是标准托管Bean。 我们将实现一个Mediator类来管理作用域Bean之间的通信。 重要的是要理解一个bean只能通知范围更广的另一个bean。 视图作用域的bean可以通知视图作用域会话作用域和应用程序作用域的bean但不能请求作用域较小的作用域的bean。 请遵循此规则以避免麻烦。 这是作用域bean的一种特性–您可能还记得可以始终将作用域更广的bean注入作用域更窄的bean中反之亦然。 为了开始使用Mediator我们将引入两个接口MediatorEventMediatorListener和中心类Mediator。 public interface MediatorEvent {... }public interface MediatorListener {public void listenToEvent(MediatorEvent event); }public class Mediator implements Serializable {private CollectionMediatorListener collaborators new HashSetMediatorListener();public static Mediator getCurrentInstance() {// access Mediator bean by JSF-Spring facilityreturn ContextLoader.getCurrentWebApplicationContext().getBean(mediator);}public void fireEvent(MediatorEvent event) {for (MediatorListener mediatorListener : collaborators) {mediatorListener.listenToEvent(event);}}public void addCollaborator(MediatorListener collaborator) {collaborators.add(collaborator);}public void removeCollaborator(MediatorListener collaborator) {collaborators.remove(collaborator);} } 介体是一个有作用域的bean可以注册并通知协作者。 合作者通过调解员进行注册。 在Spring中bean可以实现接口InitializingBean以便在bean实例化之后自动调用afterPropertiesSet方法。 这类似于PostConstruct。 afterPropertiesSet是此类bean通过介体注册的正确位置。 Bean还应该实现MediatorListener以便被通知请参见listenToEvent。 public MyBean implements MediatorListener, InitializingBean, Serializable {public void afterPropertiesSet() throws Exception {...Mediator.getCurrentInstance().addCollaborator(this);}Overridepublic void listenToEvent(MediatorEvent event) {if (event instanceof LocaleChangeEvent) {// do something}} } 我们将在UserSettingsForm和区域设置更改中使用相同的方案。 由Mediator注册的Bean将通过fireEvent进行通知。 public class LocaleChangeEvent implements MediatorEvent {... }public class UserSettingsForm implements Serializable {private Locale selectedLocale;private ListSelectItem locales;public void localChangeListener(ValueChangeEvent e) {...// notify listenersMediator.getCurrentInstance().fireEvent(new LocaleChangeEvent(this, this.selectedLocale));}... } 调解器模式提供了豆之间更好的耦合但是它们仍然与调解器耦合。 进一步的缺点仍然需要手动注册bean –请参见附加代码Mediator.getCurrentInstance。addCollaboratorthis。 每个bean仍应至少实现一个MediatorListener并带来另一个约束– listenToEvent。 每个bean都应实现此接口方法 JSF中Mediator模式的最大缺点可能是它是有作用域的bean。 视图作用域调解器只能与视图作用域的bean一起顺利使用。 当视图作用域调解器被销毁时注册的视图作用域Bean将自动删除。 其他情况可能会导致内存泄漏或几个问题。 例如应通过调用removeCollaborator手动删除由视图作用域介体注册的请求作用域Bean很容易忘记。 会话作用域的Bean应该由会话作用域的介体注册否则销毁视图作用域的介体后它们将不会得到通知。 等等 实际上介体模式仅比常规的“观察者/事件监听器”概念好一步。 有更灵活的方法其中“任何方法”都可以捕获引发的事件不仅可以修复指定的问题例如listenToEvent。 在下一篇文章中我们将看到简单而简单的方法如何仅通过一种方法和其他建议来捕获乘法事件。 参考 JSF中基于事件的通信。 我们的JCG合作伙伴 Oleg Varaksin在软件开发思想博客上的老式方法 。 翻译自: https://www.javacodegeeks.com/2012/07/jsf-event-based-communication-old.html基于jsf的项目
http://www.zqtcl.cn/news/344634/

相关文章:

  • 猎头网站模板个人社保缴费年限怎么查询
  • 博客网站设计及说明wordpress 显示 列表
  • 佛山制作手机网站莆田自助建站软件
  • 建邺做网站价格网站做换肤
  • 佛山有什么网站室内装饰设计怎么样
  • 智能建站与正常的网站购买 做网站 客户
  • 哪个是网络营销导向网站建设的基础微信商城开店需要费用吗
  • 宁波住房和建设局网站首页福州有做网站引流的吗
  • 国外科技类网站戴尔网站建设
  • 视频播放网站模板洞泾做网站公司
  • 深圳大学网站建设中美军事最新消息
  • gta5可用手机网站大全佛山网站建设服务
  • 智能建站软件哪个好智慧城市建设评价网站
  • 做网站用什么配资电脑织梦做的网站织梦修改网页模板
  • 手机网站制作吧网店营销策略
  • 管理员修改网站的参数会对网站的搜效果产生什么影响?网站建设新闻+常识
  • WordPress主题没有删除网站优化 工具
  • 建设外贸商城网站制作外国网站域名在哪查
  • 青浦练塘网站建设关键词优化的策略有哪些
  • 做网站链接怎么弄上海万户网络技术有限公司
  • 嵌入字体的网站网站结构和布局区别
  • 莆田网站建设五维网络有限公司零基础网站开发要学多久
  • 重庆官方网站查询系统2020最近的新闻大事10条
  • 中国网站建设公司排行榜成都彩票网站建设
  • 网站域名解析失败个人推广网站
  • 东莞网站建设网络公司排名卓业网站建设
  • 建立自己的网站平台的好处高校英文网站建设
  • 大力推进网站集约化建设兰州优秀网站推广
  • 手机wap网站怎样从微信公众号打开辽宁省住房和城乡建设厅网站上不去
  • 网站建设备案 优帮云四川建设设计公司网站