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

徐州市政建设集团有限责任公司seo关键词排名优化案例

徐州市政建设集团有限责任公司,seo关键词排名优化案例,外贸汽车网站有哪些,怎么给网站设置关键字一、观察者模式 1.1 观察者模式定义 意图: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变是,所有依赖于它的对象都能得到通知并自动更新。 适用性: 当一个对象状态的改变需要改变其他对象, 或实际对…

 一、观察者模式

1.1 观察者模式定义

意图: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变是,所有依赖于它的对象都能得到通知并自动更新。

适用性:

  1. 当一个对象状态的改变需要改变其他对象, 或实际对象是事先未知的或动态变化的时, 可使用观察者模式。
  2. 当应用中的一些对象对象观察其他对象时,可以使用此模式。订阅列表是动态的,因此订阅者可随时会加入或离开此列表。

1.2 观察者模式结构

  • 发布者:会向其他对象发送值得关注的事件。 事件会在发布者自身状态改变或执行特定行为后发生。 发布者中包含一个允许新订阅者加入和当前订阅者离开列表的订阅构架。

    当新事件发生时, 发送者会遍历订阅列表并调用每个订阅者对象的通知方法。 该方法是在订阅者接口中声明的。

  • 订阅者: 接口声明了通知接口。 在绝大多数情况下, 该接口仅包含一个 update更新方法。 该方法可以拥有多个参数, 使发布者能在更新时传递事件的详细信息。

  • 具体订阅者: 可以执行一些操作来回应发布者的通知。 所有具体订阅者类都实现了同样的接口, 因此发布者不需要与具体类相耦合。

    订阅者通常需要一些上下文信息来正确地处理更新。 因此, 发布者通常会将一些上下文数据作为通知方法的参数进行传递。 发布者也可将自身作为参数进行传递, 使订阅者直接获取所需的数据。

  • 客户端 :会分别创建发布者和订阅者对象, 然后为订阅者注册发布者更新。

二、实例

实现思路

  1. 声明订阅者接口。 该接口声明一个通知方法。
  2. 声明发布者接口并定义一些接口来在列表中添加和删除订阅对象。
  3. 创建具体发布者类。 每次发布者发生了重要事件时都必须通知所有的订阅者。
  4. 在具体订阅者类中实现通知更新的方法。

 

1.Monster

public class Monster : MonoBehaviour
{public string sname = "怪物x";// Start is called before the first frame updatevoid Start(){Invoke("Dead",1);}void Dead(){Debug.Log("怪物死亡!");//GameObject.Find("Player").GetComponent<Player>().MonsterDead(this);//GameObject.Find("Task").GetComponent<Task>().TaskmonsterDead(this);//GameObject.Find("Other").GetComponent<Other>().OthermonsterDead(this);EventCenter.GetInstance().EventTrigger("MonsterDead",this);}
}

2.Player

void Start()
{    EventCenter.GetInstance().AddEventListener("MonsterDead", MonsterDeadDo);
}public void MonsterDeadDo(object info)
{Debug.Log("玩家的奖励"+ (info as Monster).name);
}void OnDestory()
{EventCenter.GetInstance().RemoveEventListener("MonsterDead", MonsterDeadDo);
}

3.EventCenter

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;/// <summary>
/// 事件中心 单例模式对象
/// 1.dictionary
/// 2.委托
/// 3.观察者设计模式
/// </summary>
public class EventCenter : Singleton<EventCenter>
{//使用泛型委托传递怪物-蝙蝠等 具体敌人类型public Dictionary<string, UnityAction<object>> eventDic = new Dictionary<string, UnityAction<object>>();/// <summary>/// 添加事件监听/// </summary>/// <param name="name">事件的名字</param>/// <param name="action">准备用来处理事件的 委托函数</param>public void AddEventListener(string name,UnityAction<object> action){//判断事件中心是否有此 函数if (eventDic.ContainsKey(name))eventDic[name] += action;//无elseeventDic.Add(name, action);}/// <summary>/// 执行函数/// </summary>/// <param name="name">事件名</param>/// <param name="info">传递参数 具体怪物类型</param>public void EventTrigger(string name,object info){//判断触发中心是否有此 函数if (eventDic.ContainsKey(name)){eventDic[name](info);}}/// <summary>/// 移除对应事件监听/// </summary>/// <param name="name">事件名</param>/// <param name="action">委托函数</param>public void RemoveEventListener(string name, UnityAction<object> action){//判断事件中心是否有此 函数if (eventDic.ContainsKey(name))eventDic[name] -= action;}/// <summary>/// 清空事件中心,主要用于场景切换/// </summary>public void Clear(){eventDic.Clear();}
}
http://www.khdw.cn/news/46989.html

相关文章:

  • 形容网站做的好百度信息流投放技巧
  • erp系统推荐排名优化公司
  • 微网站设计免费的关键词优化工具
  • 有点子外包做网站会不会被盗窃免费的网页入口
  • 花生壳盒子做网站服务器苏州网站建设书生
  • 怎么做英文版的网站关键词的优化方法
  • 网站建设优化服务报价抖音优化排名
  • 给医院做网站赚钱吗温州网站建设优化
  • 网站建设域名注册百度关键词优化大师
  • 做网站编辑工作累吗广州seo全网营销
  • 杭州专业网站建设公司个人如何推广app
  • 海外网络加速器华为seo诊断及优化分析
  • 网站设计 上海百度软文
  • 卢龙网站建设关键词有哪些关联词
  • 天津网站建设设计开发公司seo刷关键词排名优化
  • wordpress 相互关注seo收费标准
  • 企业网站提供商购买模板建站
  • 怎么自己制作一个app专业搜索引擎优化电话
  • 怎么免费给网站做收录网站目录
  • 网站开发用原生中国搜索引擎有哪些
  • 企业融资是做什么的厦门站长优化工具
  • 遵义北京网站建设百度网站权重查询
  • 做酒店网站有哪些目录营销广告语
  • 域名与网站网站收录平台
  • 男男做爰视频网站seo系统培训哪家好
  • 网站策划书如何做友情链接买卖
  • 网站建设空间一般多大徐州百度搜索网站排名
  • 根据图片做网站用什么抖音搜索优化
  • 交易平台网站建设策划书百度一下百度主页度
  • 华为官方网站竞价推广账户托管费用