搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小桥流水78
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Python相对路径ImportError:attempted relative import with no known parent package_python attempted relative import with no known par
2
elasticsearch-6.8.23配置transport连接xpack密码,springboot2.1.18_x-pack-transport
3
【Python】解决Python报错:AttributeError: ‘function‘ object has no attribute ‘xxx‘_attributeerror: 'function' object has no attribute
4
《2023年网络与信息安全行业全景图》正式发布 (附下载)_信息安全全景图
5
mysql怎么生成uml图,有没有办法从现有的MySQL数据库生成UML类图?
6
《大数据导论》一第1章 理解大数据
7
mysql的日志文件在哪?_mysql日志文件在哪
8
NLP(21)--任务型对话机器人_任务型智能问答
9
重磅!从现在起,ChatGPT不用注册也能用了
10
Spring Security Oauth2密码模式 登录密码RSA加密_oauth2 登录 加密
当前位置:
article
> 正文
AS3_MVC
作者:小桥流水78 | 2024-08-18 19:29:50
赞
踩
AS3_MVC
观察者模式是当你不想使用Swiz,C
air
ngorm,Mate或PureMVC等
框架
,但是又想在你的
程序
或网站中更加舒适有效地组织你的
事件
时非常有用的
设计
模式之一。
维基百科中的定义:
? 观察者模式(有时又被称为发布/订阅模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。
更多信息或你想看UML图,可访问
维基百科的网站
当你想要以特殊的信息通知相关的对象时,你可以使用这种设计模式;例如,假设你有100个
按钮
,你可以显示、隐藏其中的奇数或偶数个;它们在哪添加不重要,即使在显示列表里甚至在另一个显示列表里,因为观察者模式采用通知的形式来处理事件。
如果你工作时通常以事件机制处理,你必须知道你的
组件
在哪,如果它被10个不同的容器嵌套你必须派遣监听每个组件的这一事件...这太可怕了!
观察者模式可以解决这个问题,因为它就像一个事件引擎可以获取所有可以对一个通知产生反应的物体并且通知所有组件。当你用它工作时,你可以在你的产品的任何地方使用它,相信我!
让我们来看看观察者模式是怎样工作的:
首先,你应该创建一个IOberver接口,含有一个update方法,用来接收目标类别所发出的更新的通知:
public interface IObserver {
function update(_notification:String):void;
}
然后,你必须创建一个Observer Manager类用来管理所有含有IObserver接口的对象。
这个类应该有3个public的方法:subscribe,unsubscribe和notify。
当你想要在显示列表中添加一个对象并将通知更新到Observer中,你可以订阅;取消订阅当你从显示列表中删除一个对象或你不再需要更新,同时通知你想要通知的所有订阅此信息的对象:
public class ObserverManager {
private static var instance : ObserverManager;
private var observerData : Array;
public function ObserverManager():void
{
observerData = new Array();
}
public static function getInstance() : ObserverManager
{
if(instance == null)
instance = new ObserverManager();
return instance;
}
public function subscribe(observer:IObserver):void
{
observerData.push(observer);
}
public function unsubscribe(observer : IObserver) : void
{
var totObs:int = observerData.length;
for (var i:int = 0; i < totObs; i++)
{
if (observer === observerData[i])
{
observerData.splice(i, 1);
break;
}
}
}
public function notify(_notification:String):void
{
var totObs:int = observerData.length;
for(var i:int = 0; i < totObs; i++){
observerData[i].update(_notification);
}
}
}
复制代码
行了,现在你已经准备好使用观察者模式工作了,所以我们创建一个实现IObserver接口的对象,并且将更改添加到显示列表中所有实现IObserver接口的对象,同时修改所有相关通知。
下面是我们常见的按钮实现IObserver接口:
public class ObserverButton extends Button implements IObserver
{
public static const HIDE_BUTTON:String = "hideBtnEvt";
public static const SHOW_BUTTON:String = "showBtnEvt";
public function ObserverButton()
{
super();
}
public function update(_notification:String):void
{
switch(_notification)
{
case HIDE_BUTTON:
this.alpha = .2;
break;
case SHOW_BUTTON:
this.alpha = 1;
break;
}
}
}
从Observer Manger中订阅这些按钮:
protected var observer:ObserverManager;
protected function init():void
{
observer = ObserverManager.getInstance();
for (var i:int = 0; i < 100; i++)
{
var btn:ObserverButton = new ObserverButton();
btn.label = i.toString()
addElement(btn);
if((i & 1) == 0)
observer.subscribe(btn);
btn.x = Math.random() * 800;
btn.y = Math.random() * 500 + 70;
}
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小桥流水78/article/detail/998888
推荐阅读
article
MySQL
行锁
和
表锁
是什么?区别
,
作用等学习总结_
mysql
表锁
与
行锁
...
本文详细解释了数据库锁的概念
,
重点分析了
MySQL
中
行锁
和
表锁
的区别
,
包括它们的特点、共享锁和排他锁的应用
,
以及如何检测...
赞
踩
article
4年
测试
工程师
经历
,下一步转
开发
还
是
继续
测试
?_实习
经历
是
测试
可以
找
开发
吗...
测试
四年,没有积累编程脚本能力和自动化经验,找工作时都要求语言能力,自动化框架。感觉
开发
同事积累的
经历
容易找工作。下一步...
赞
踩
article
测试
工程师
,
必备这“
7
”个
,
手机
测试
技能
...
移动应用安全近几年越来越被重视
,
目前针对移动端的应用也越来越多
,
每天有大量的数据从移动端发出
,
部分数据在移动端进行处理
,
...
赞
踩
article
Python
反
反
爬
系列(一)----K近邻算法与
CSS
动态
字体
加密_
shape
反
爬
...
声明:文章仅源自个人兴趣爱好,不涉及他用,侵权联系删。网站不好直接给出,给出论坛无法过审,观看破解过程即可。1.
字体
反
爬
...
赞
踩
article
《
python
本机
环境
多版本切换》-两种方式以及具体
使用
--
venv
/
pyenv
+
pycharm
测试...
在开发
使用
rasa的时候发现自己安装的
python
环境
是3.12的,和rasa不兼容,所以实践一下更换多
python
环境
...
赞
踩
article
低代码: 组件库
测试
之
Vue
环境
下的
测试
工具
以及
测试
环境
搭建...
提供特定的方法,在隔离的话
环境
下,进行组件的挂载,以及一系列的
测试
。特别注意要使用 版本 2.0.0 以上。低代码: 组...
赞
踩
article
Microsoft
SQL
Server
2016
with
SP3 GDR 发布,修复高危安全漏洞...
Microsoft
SQL
Server
2016
with
SP3 GDR 发布,修复高危安全漏洞_
microsoft
...
赞
踩
article
基于
Python
通过
cookie
对某
芯片
网站信息
的
获取_
python
爬取中国
芯片
发展
数据
...
T网站
的
信息获取。_
python
爬取中国
芯片
发展
数据
python
爬取中国
芯片
发展
数据
&...
赞
踩
article
MacOS
下
的
终端
神器_
macos
终端
助手...
Iterm是一款MacOs下
的
终端
模拟器,它对于程序员来说是非常友好。因此,Iterm也是每个使用MacOs进行软件开发...
赞
踩
article
gitee
使用
教程_
gitee
删除
分支
...
本文介绍了如何在Gitee上注册账户、创建远程仓库以及通过Git进行版本控制。详细步骤包括:注册Gitee账户,新建远程...
赞
踩
article
腾讯
云
API
OCR
个人
身份证
正反面
文字信息识别提取...
secretId和secretKey管理界面。
腾讯
云
API
OCR
个人
身份证
正反面
文字信息识别提取 ...
赞
踩
article
Linux
aarch64
交叉
编译之
mesa
图形库_
mesa
交叉
编译...
对于
mesa
的
交叉
编译。该文章的目标是编译一套
aarch64
Linux
Debian嵌入式版本上可以运行的版本库,接下来就...
赞
踩
article
免费
国产AI大
语言
模型
API
接口
[20240626]_
国内
ai
接口
...
本文介绍我们搜集到的
国内
所有人工智能大
语言
模型
的
免费
API
接口
,包括完全
免费
以及限时
免费
等方式。_
国内
ai
接口
国内
ai
接...
赞
踩
article
软件测试
基础知识
总结
...
之前有将基础的
软件测试
知识做了一个
总结
,但比较潦草,很多内容只是一笔带过,快到年底了,自己也有个写年终知识
总结
文档的计划...
赞
踩
article
RabbitMQ
-
延迟
队列
的使用_实现
延迟
消息
队列
...
该种方式可以创建一个承载不同超时时间
消息
的
消息
队列
,但是这种方式有一个问题,如果
消息
队列
中排在前面的
消息
没有到超时时间,...
赞
踩
article
virtio
与
vhost
_
net
介绍_
virtio
vhost
...
1.
virtio
基本构建模块
virtio
是一种I/O半虚拟化解决方案,是一套通用I/O设备虚拟化的程序,是对半虚拟化H...
赞
踩
article
区块
链
中的
密码
学
_
区块
链
密码
...
本文介绍了
密码
学
的发展历程,从古典
密码
学
到现代
密码
学
,再到公匙
密码
学
。在
区块
链
中,主要应用了Merkle树哈希算法、椭圆...
赞
踩
article
自学
软件测试
一个月
,
二线城市拿到
了
12K
,
分享
面试
心得...
说实话
,
软件测试
现在是处于供大于求的情况
,
虽然很多公司都发布
了
自己的招聘需求
,
待遇也不算低。但是
,
去
面试
的
软件测试
员也非...
赞
踩
article
【转】
MySQL
的
表锁
和
行锁
_
mysql
锁表...
转自:https://mp.weixin.qq.com/s/8LrPHG7XtsvNJJs58yK-0g锁是计算机协调多...
赞
踩
article
MySQL
详细基础教程_
mysql
数据库
...
数据库
(简称:DB,全称: DataBase)是按照数据结构来组织、存储和管理数据的仓库。概念:每个
数据库
都有一个或多个...
赞
踩
相关标签
mysql
数据库
测试用例
自动化测试
功能测试
面试
职场和发展
字体反爬
python
学习
笔记
人工智能
低代码
microsoft
oracle
sql
git
github
腾讯云
云计算
linux
debian
运维
嵌入式Linux