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

用php做的博客网站有哪些招标网招标信息

用php做的博客网站有哪些,招标网招标信息,广东专业网站建设,郑州高端网站制作团队文章目录 基本概念定义使用场景代码实现 延伸阅读java监听机制spring监听机制 基本概念 定义 观察者模式是一种行为型设计模式#xff0c;它定义了一种一对多的依赖关系#xff0c;当一个对象的状态发生改变时#xff0c;其所有依赖者都会收到通知并自动更新。 观察者模式… 文章目录 基本概念定义使用场景代码实现 延伸阅读java监听机制spring监听机制 基本概念 定义 观察者模式是一种行为型设计模式它定义了一种一对多的依赖关系当一个对象的状态发生改变时其所有依赖者都会收到通知并自动更新。 观察者模式Observer又称发布-订阅模式Publish-SubscribePub/Sub。它是一种通知机制让发送通知的一方被观察方和接收通知的一方观察者能彼此分离互不影响。 观察者模式包含以下几个核心角色 主题Subject也称为被观察者或可观察者它是具有状态的对象并维护着一个观察者列表。主题提供了添加、删除和通知观察者的方法。 观察者Observer观察者是接收主题通知的对象。观察者需要实现一个更新方法当收到主题的通知时调用该方法进行更新操作。 具体主题Concrete Subject具体主题是主题的具体实现类。它维护着观察者列表并在状态发生改变时通知观察者。 具体观察者Concrete Observer具体观察者是观察者的具体实现类。它实现了更新方法定义了在收到主题通知时需要执行的具体操作。 观察者模式通过将主题和观察者解耦实现了对象之间的松耦合。当主题的状态发生改变时所有依赖于它的观察者都会收到通知并进行相应的更新。 使用场景 一个对象目标对象的状态发生改变所有的依赖对象观察者对象都将得到通知进行广播通知。通过这种事件触发的机制将观察者和被观察者进行解耦。 注意事项 1、JAVA 中已经有了对观察者模式的支持类。Java中EventObject、EventListener 2、避免循环引用。 3、如果顺序执行某一观察者错误会导致系统卡壳一般采用异步方式。 代码实现 主题接口 /*** 抽象主题抽象被观察者角色*/ public interface Subject {/*** 所有抽象观察者角色的集合*/ListObserver observerList Lists.newArrayList();/*** 注册观察者* param observer*/default void addObserver(Observer observer){observerList.add(observer);}/*** 取消注册* param observer*/default void removeObserver(Observer observer){observerList.remove(observer);}/*** 通知所有观察者* param content*/default void notifyAllObserver(String content){for (Observer observer: observerList){observer.recvMsg(content);}}}观察者接口 /*** 观察者*/ public interface Observer {void recvMsg(String content); }具体被观察者 Data public class ConcreteSubject implements SubjectObserver {private String msg;/*** 发送通知*/public void sendMsg(){System.out.println(ConcreteSubject send msg: this.msg);notifyAllObserver(msg);} }具体观察者 public class ConcreteObserver implements Observer {Overridepublic void recvMsg(String content) {System.out.println(ConcreteObserver recv msg: content);} }测试 public class ObserverTest {public static void main(String[] args) {ConcreteSubject concreteSubject new ConcreteSubject();concreteSubject.setMsg(important msg);concreteSubject.addObserver(new ConcreteObserver());concreteSubject.sendMsg();} }延伸阅读 java监听机制 一、创建事件对象 public class MusicEvent extends EventObject {public static final int STATE_OPEN 1;public static final int STATE_CLOSE -1;/*** 状态*/private int state;/*** Constructs a prototypical Event.** param source the object on which the Event initially occurred* throws IllegalArgumentException if source is null*/public MusicEvent(Object source) {super(source);}public MusicEvent(Object source, int state) {super(source);this.state state;}public int getState() {return state;}public void setState(int state) {this.state state;} }二、创建监听器 public interface MusicListener extends EventListener {void play(MusicEvent musicEvent); }CloseMusicListener实现 public class CloseMusicListener implements MusicListener{Overridepublic void play(MusicEvent musicEvent) {if(musicEvent.getState() MusicEvent.STATE_CLOSE){System.out.println(CloseMusicListener play: stop dance);}} }OpenMusicListener实现 public class OpenMusicListener implements MusicListener{Overridepublic void play(MusicEvent musicEvent) {if(musicEvent.getState() MusicEvent.STATE_OPEN){System.out.println(OpenMusicListener play: let us go dancing!);}} }三、定义事件源管理监听器 public class EventSource {// 监听器列表监听器注册入此列表public ListMusicListener musicListenerList new ArrayList();// 注册监听器public void addMusicListener(MusicListener musicListener) {musicListenerList.add(musicListener);}// 取消注册public void removeMusicListener(MusicListener musicListener) {musicListenerList.remove(musicListener);}// 接收外部事件public void notifyMusicListener(MusicEvent musicEvent) {for (MusicListener musicListener : musicListenerList){musicListener.play(musicEvent);}} }四、测试 public class MusicEventTest {public static void main(String[] args) {EventSource eventSource new EventSource();eventSource.addMusicListener(new OpenMusicListener());eventSource.addMusicListener(new CloseMusicListener());eventSource.notifyMusicListener(new MusicEvent(开门事件, MusicEvent.STATE_OPEN));} }spring监听机制 一、创建事件对象继承ApplicationEvent EqualsAndHashCode(callSuper true) public class MyEvent extends ApplicationEvent {private String context;public MyEvent(Object source) {super(source);}public String getContext() {return context;}public void setContext(String context) {this.context context;} }二、定义监听器实现ApplicationListener MyApplication1 public class MyApplication1 implements ApplicationListenerMyEvent {Overridepublic void onApplicationEvent(MyEvent myEvent) {System.out.println(MyApplication1 event: myEvent.getContext());} }MyApplication2 public class MyApplication2 implements ApplicationListenerMyEvent {Overridepublic void onApplicationEvent(MyEvent myEvent) {System.out.println(MyApplication2 event: myEvent.getContext());} }三、事件通知 Service public class MyListenerService {Autowiredprivate ApplicationEventPublisher applicationEventPublisher;public void register(MyEvent event){applicationEventPublisher.publishEvent(event);} }
http://www.pierceye.com/news/317123/

相关文章:

  • 济南招考院网站网站建设需要些什么东西
  • 手机怎么搭建网站厦门 做网站
  • 网站底部友情链接典型十大优秀网络营销案例
  • 公司装修工程免费推广软件平台seo博客
  • 树状结构的网站一个人可以做多少网站
  • 什么网站是专门做评论赚钱的响应式网站标准尺寸
  • 梅州市建设培训中心网站济南网上房地产
  • 海口网站提升排名专业做公司logo的网站
  • fm网站开发做网站自动赚钱
  • 网站二级导航制作wordpress找人做
  • 网站建设市场占有率网站开发工程师的职责
  • wordpress 单本小说站做网站前景
  • 只做网站可以在百度里收到吗平面设计是干嘛的
  • 义乌网站建设优化推广网站开发需要哪些人怎么分工
  • 关键词排行优化网站企业seo外包
  • 自适应网站怎么做广西建设局建设行政主管部网站
  • 把网站做成手机版学网页设计的培训
  • 陕西省建设厅执业资格注册中心网站报名系统网站建设重庆最加科技
  • 网站优化软件排名器wordpress E405
  • 北京建设部网站职称集约化网站建设方案
  • 常州溧阳建设工程管理中心网站惠州网站网站建设
  • 你的网站尚未进行备案中国建设银行贵州分行网站
  • 白银做网站的董事wordpress模板搬迁
  • 专业的网站开发建访动地科技登录网站
  • 网站模板素材下载如何做二维码跳转到网站
  • 自助建站免费信息发布网站wordpress 做图库栏目
  • 做网站 我们的工人怎么写哪个网站可以做照片分享
  • 做娱乐网站一个服务器可以建几个网站
  • 外包加工网站企业邮箱免费注册申请
  • jsp网站开发模式徐州手机网站制作