30.3 事件触发器的开发(观察者模式+中介者模式)

30.3.1 场景介绍

(1)有一产品它有多个触发事件(如创建事件、修改、删除),如创建文本框时触发OnCreate事件,修改时触发onChange事件,双击时触发onDblClick事件。

(2)当产品触发事件时,会创建相应的产品事件对象(ProductEvent),并将这个事件对象传递给观察者,以便通知观察者该事件的发生

(3)观察者实现上是一个事件的分发者相当于中介模式中的中介对象,会把这个事件分发者相应的事件处理对象。

30.3.2 类图

 第30章 混编模式(3)

(1)事件的观察者:作为观察者模式中的观察者角色,接收观察期望完成的任务,在这个框架中主要用来接收ProductEvent事件

(2)事件分发者:作为中介者模式中的中介者角色,它担当着非常重要的任务——分发事件,并同时协调各个同事类(也就是事件的处理者)处理事件。

(3)抽象事件处理者:相当于中介者模式中的抽象同事类。为每个事件处理者定义能够处理事件的级别,但定义与中介者交互的接口(exec)

【编程实验】事件触发器

//Classes.h

#pragma once
//**************************************辅助类********************
//产品事件类型
enum ProductEventType
{
    NEW_PRODUCT = 1,
    DEL_PRODUCT = 2,
    EDIT_PRODUCT = 3,
    CLONE_PRODUCT = 4
};

//事件处理类型
enum EventHandlerType
{
    NEW = 1,
    DEL = 2,
    EDIT =3,
    CLONE = 4
};

typedef void Object;
//事件对象类(主要用来记录触发事件的源对象)
class EventObject
{
    Object* source; //记录事件源对象
public:
    EventObject(Object* source)
    {
        this->source = source;
    }

    Object* EventSource()
    {
        return source;
    }
};
View Code

相关文章:

  • 2021-11-11
  • 2021-08-11
  • 2021-07-01
  • 2022-12-23
  • 2021-05-29
  • 2021-12-01
  • 2022-12-23
  • 2021-07-14
猜你喜欢
  • 2021-08-25
  • 2021-12-06
  • 2021-11-06
  • 2021-04-29
  • 2022-12-23
  • 2021-08-16
相关资源
相似解决方案