当前位置: 首页 > 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.pierceye.com/news/145372/

相关文章:

  • 论坛程序做导航网站专做轮胎的网站
  • 网站开发软件解决方案个人网站可以做资讯吗
  • 网站右击无效是怎么做的牛商网建设的食品网站
  • 新北网站建设全网营销网站建设
  • 网站建设与管理 教学设计自己的身份已经网站备案了
  • 长沙网站列表网站开发实例及研究
  • 东莞阳光网官方网站吉林百度查关键词排名
  • 网站开发投标书范本目录左旗网站建设
  • 一流的五屏网站建设wordpress 移动端 接口
  • 服装行业网站建设兴宁网站设计
  • 网站两边的悬浮框怎么做wordpress 非插件代码高亮
  • 网站安全管理制度建设下载网站建设公司哪家强
  • 网络直播网站开发长春市城乡建设部网站
  • 自己搭建服务器做网站要多久汕头网络推广电话
  • 除了昵图网还有什么做图网站深圳房地产网站开发
  • 网站建设哪家go好重庆怎样网站推广
  • 松江网站建设哪家好wordpress去掉父分类
  • 网站 云建站设计网站推荐室内
  • 网站怎么自适应屏幕云南建设投资集团网站
  • qq中心官方网站两个网站如何使用一个虚拟主机
  • 泰安网站制作推荐电脑网页游戏排行榜前十名
  • 石家庄最好的网站建设公司上海都有哪些企业公司
  • 网站的链接要怎么做官网制作公司
  • 学生成绩管理系统 网站建设站长之家源码下载
  • wap多用户网站微信端的网站开发python
  • 网络营销中自建网站厦门湖里区建设局网站
  • 公司建设网站的申请信用卡做盗版影视网站违法吗
  • 商务网站推广技巧包括什么移动网站开发教程
  • 北京网站备案域名温州制作网站公司
  • 门户网站建设工作流程做网站的背景图片