搜索
查看
编辑修改
首页
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
Android之ContentProvider详解_android provider insert update
2
Seata 全局锁等待超时 问题排查_io.seata.rm.datasource.exec.lockwaittimeoutexcepti
3
程序员情人节防止割韭菜
4
docker-compose部署elk(8.9.0)并开启ssl认证_elasticsearch8 docker 开启ssl
5
MySQL(四):B+树索引、聚簇索引、二级索引、联合索引_mysql 二级索引和辅助索引
6
mcgs 日期选择窗口_mcgs与s7-300TCP通信超级详细教程
7
FastJson使用技巧_fastjson deserializeusing
8
探索Vue.js中的文件夹上传解决方案:vue-simple-uploader
9
数据分析之王SAS,如何看生成式AI的前景?_大模型代码生成前景
10
全球最强大模型一夜易主,GPT-4时代终结!Claude 3提前狙击GPT-5,3秒读懂万字论文理解力_claude apikey
当前位置:
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
数据库
-
数据类型
的
选择
_
数据库
选择
数据类型
...
1.CHAR和VARCHAR都是用来存储字符串,char属于固定长度字符类型,varchar属于可变长度字符类型。 检索...
赞
踩
article
前端VUE3.0,
DAY19
,
列表
过滤
_前端
list
过滤
...
本文展示了如何在Vue3.0中实现
列表
的模糊查询
过滤
功能。通过监听用户输入并使用计算属性或watcher实时更新
过滤
后的...
赞
踩
article
Python
中使用
中文
_
pyhon
中显示
中文
csdn
...
python的
中文
问题一直是困扰新手的头疼问题,这篇文章将给你详细地讲解一下这方面的知识。当然,几乎可以确定的是,在将来...
赞
踩
article
6
月份最火的
10
个
GitHub
项目
...
2021 年
6
月份最热
GitHub
盘点,这些
GitHub
项目
是本月 Star 攀升最多的 repo,它们分别...
赞
踩
article
Long
RAG:
Enhancing
Retrieval
-
Augmented
Generation
...
在传统的RAG框架中,基本检索单元通常很短。像DPR这样的常见检索器通常处理100个单词的维基百科段落。这样的设计迫使检...
赞
踩
article
数组--习题_【
输入
】有多
行
m>。
m>第
m>1
m>
行
是两个整数
m>n
m>(
m>n
m>
m>≤
m>
m>
m>1
m>0
m>)和
m
(
m
m>≤
m>
m>
m>1
m>0
m>),表示
矩阵
有
m>n
m>
行
m
列
m>。
m>接...
数组练习题_【
输入
】有多
行
m>。
m>第
m>1
m>
行
是两个整数
m>n
m>(
m>n
m>
m>≤
m>
m>
m>1
m>0
m>)和
m
(
m
m>≤
m>
m>
m>1
m>0
m>),表示
矩阵
有
m>n
m>
行
m
列
m>。
m>接下【
输入
】有多
行
m>。
m>第
m>1
m>...
赞
踩
article
大
模型
技术在
金融
行业中应用
的
挑战
、应对与展望_
大
模型
为
互联网
金融
的
挑战
...
随着行业
的
不断发展,全民化
的
生成式AI或将成为2024年
的
科技趋势。越来越多
的
实践证明,
大
模型
深入企业运行
的
方方面面,可...
赞
踩
article
VSCode
借用C/C++插件的clang-
format
实现
代码
格式
统一_
vscode
c++
fo...
日常
代码
开发中,假如不加以约束,那么每个人的
代码
习惯必定存在一些差异,在多人协作的情况下,不同的
代码
习惯导致了不同的
代码
...
赞
踩
article
LSTNet
项目
代码解析-
pytorch
...
LSTnet
项目
解读+代码+数据集+模型可视化+
pytorch
_lstnetlstnet ...
赞
踩
article
26岁
,
干
了
三年
测试
,
月薪
才
12k
,
能
跳槽找到
一个
更高薪资的工作吗?_
测试
12k
不涨
了
...
在这里
,
我想给想进阶的朋友们一点建议:很多时候
,
很多事情
,
并不像你想象中的那么简单
,
千万不要自认为简单而不愿意去做
,
很多...
赞
踩
article
2020.8
.
17
红队
威胁情报-日更...
本文分享了2020年8月
17
日的
红队
威胁情报,包括多个疑似攻击者的IP地址段,如39.101 - 39.107、81.6...
赞
踩
article
免费
国产AI大
语言
模型
API
接口
[20240626]_
国内
ai
接口
...
本文介绍我们搜集到的
国内
所有人工智能大
语言
模型
的
免费
API
接口
,包括完全
免费
以及限时
免费
等方式。_
国内
ai
接口
国内
ai
接...
赞
踩
article
python
全系列官方
中文
文档
_
python
中文
文档
...
https://docs.
python
.org/zh-cn/3.7/index.htmlPS:用的时候,修改url上对应...
赞
踩
article
ROS
操作系统
_rose
操作系统
...
ROS
(机器人
操作系统
,Robot Operating System),是专为机器人软件开发所设计出来的一套电脑
操作系统
...
赞
踩
article
如何
使用
Visual
studio
2019
导入
c++项目_
visual
studio
2019
如何
...
在这里插入图片描述。_
visual
studio
2019
如何
导入
项目
visual
studio
2019
如何
导入
项...
赞
踩
article
OpenHarmony
4.0 本地
OTA
升级
_
openharmony
ota
升级
...
OpenHarmony
3.2 本地
OTA
全量增量
升级
操作指南_
openharmony
ota
升级
openharmony
...
赞
踩
article
Midjourney
和
stable
diffusion
到底有什么区别?要怎么选?_
sd
和
mj区别...
本文详细比较了AI绘画软件
Midjourney
(MJ)
和
stable
diffusion
(SD)在收费、设备需求、安装部署...
赞
踩
article
SM2
算法的
加密
签名
消息语法规范(五)如何构造
signedAndEnvelopedData
_sign...
前面的文章中已经介绍了国密规范中的带
签名
的数字信封数据
signedAndEnvelopedData
类型。接下来讲一下怎么...
赞
踩
article
Kaldi
sherpa
-
ncnn
端侧语音
识别
_
kaldi
结合
ncnn
...
本文详细介绍了
sherpa
-
ncnn
,一个基于
Kaldi
和
ncnn
的易于安装的实时语音
识别
包。通过简单步骤完成安装,并提...
赞
踩
article
如何
学习
ClickHouse
:糙快猛的
大
数据
之路(
技术
要点概览)_
clickhouse
技术
栈...
想要在
大
数据
分析领域呼风唤雨?来学
ClickHouse
吧!这个超强的列式
数据
库让你瞬间掌控海量
数据
。从入门到精通,我们的...
赞
踩
相关标签
javascript
vue
web
python
character
windows
encoding
file
codec
数据库
编程语言
人工智能
android模拟器
linux
语言模型
c语言
算法
c++
金融
大数据
面试
职场和发展
AIGC
chatgpt