ActionScript 3.0 设计模式笔记

最近在看 设计模式的书,以此做笔记。  学习时间:晚上 

一.单例模式:就是只能生成一个实例

Singleton5.getInstance();

 

 1 package com.chunbai.model.singleton.example5
 2 {
 3     public class Singleton5
 4     {
 5         private static  var _singleton:Singleton5 = null;
 6         
 7         public function Singleton5()
 8         {
 9             if(_singleton == null)
10             {
11                 trace ("ok");
12             }
13             else
14             {
15                 throw new Error("do not function");
16             }
17         }
18         
19         public static  function getInstance():Singleton5
20         {
21             if(_singleton == null)
22             {
23                 _singleton = new Singleton5();
24             }
25             return _singleton;
26         }
27         
28         public function doSomething():void
29         {
30             trace ("dosomething");
31         }
32         
33     }
34 }

 

二:观察者模式 :通俗的讲就是 实时更新

1. 观察者模式概念

   观察者模式又称作发布-订阅(publish/Subscribe)、模型-视图(model/view)、源-监听器(source/listener)或从属者(Dependents)模式。

   用来定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新

   Observable(抽象被观察者角色):定义了被观察者必须实现的职责,它必须能够动态地增加、删除观察者,并且通知观察者。

   Observer(抽象观察者角色):定义了观察者收到消息后,进行更新的接口。

   ConcreteObservable(具体被观察者角色):定义了被观察者自己的业务逻辑,并且定义了对哪些事件进行通知。

   ConcreteObserver(具体观察者角色):实现更新接口,对通知按自己的需求处理。

 

   这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来看作事件处理系统。

   观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。

   这个主题对象(发布者对象)在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

   将一个系统分割成一系列相互协作的类有一个很不好的习惯,那就是需要维护相关对象间的一致性。

   我们不希望为了维护一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。

   

   当一个对象的改变需要同时改变其他对象的时候,而且不知道具体有多少对象有待改变时,我们考虑使用观察者模式。

   一个抽象模型有两个方面,其中一方面依赖于另一方面,这时用观察者模式可以将这两者封装在独立的对象中使它们各自独立地改变和复用。

   观察者模式所做的工作其实就是在解除耦合。让耦合的双方都依赖于抽象,而不是依赖于具体,从而使得各自的变化都不会影响另一边的变化。

   事件委托:一个委托可以搭载多个方法,所有方法被依次唤起;委托对象所搭载的所有方法必须具有相同的原形和形式,

   也就是拥有相同的参数列表和返回值类型。

   

    按照“四人团”的说法,Observer模式的意图是“定义对象间的一种一对多的依赖关系,

    当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新”。

   实际应用的例子是,比如建模工具中,若干条线形元素附着在一个块状元素上,当块状元素的大小、位置发生变化,那些线形元素也需要进行改变,

   这个时候我们就可以应用Observer模式,在块状元素和线形元素之间建立一对多的关系,并利用这一模式进行维护。

   Observer模式首先构造一个Observer类,在这个类中具有一个update函数。被依赖的对象拥有它,依赖的对象被注册到Observer中,

   当被依赖的对象发生变化的时候,就调用update函数更新所有依赖它的对象。更新的方式由update函数具体实现。

   还有一个现实中的例子,各个部门之间进行通讯,当一方发出新的信息时,按照传统的方法它必须告诉所有其他部门。

   如果使用Observer模式,那么产生新消息的一方只需要告知Observer,由Observer通知其他方面。

   

2. 观察者模式的优点:

   1. 观察者和被观察者之间是抽象耦合。增加观察者还是被观察者都非常容易实现,只需实现相应的接口。

   2. 可以建立一套触发机制。

   3. 观察者模式支持广播通信。被观察者会向所有的登记过的观察者发出通知,方便管理。

   

3. 观察者模式有下面的一些缺点:

   1. 如果一个被观察者对象有很多直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。(客服电话)

   2. 如果在被观察者之间有循环依赖的话,被观察者会触发它们之间进行循环调用,导致系统崩溃。在使用观察者模式时要特别注意这一点。

(B1->A1->B2->A2->B1)B:被观察者A:观察者

   3. 如果对观察者的通知是通过另外的线程进行异步投递的话,系统必须保证投递是以自恰的方式进行的。(java线程)

   4. 虽然观察者模式可以随时使观察者知道所观察的对象发生了变化,但是观察者模式没有相应的机制使观察者知道所观察的对象是怎么发生变化的。

   

 

三.工厂模式

转载于:https://www.cnblogs.com/bulolo/archive/2013/01/22/2871405.html

第Ⅰ部分 无常的变化 第1章 面向对象程序设计、设计模式ActionScript 3.0 成功之后的喜悦 OOP基础 抽象 封装 继承 多态性 使用设计模式进行软件开发的原则 使用接口而不是具体的实现 养成使用组合的习惯 计划项目时要同时考虑维护和扩展性 应用程序的计划:并不是必须遵守的原则 第Ⅱ部分 创建模式 第2章 工厂方法模式 什么是工厂方法模式? ActionScript 3.0中的抽象类 工厂方法最小化示例 隐藏产品类 .实例:打印商店管理程序 实例扩展:彩色打印 工厂方法模式中关键的00P概念 实例:Sprite工厂 实例:垂直射击游戏 小结 第3章 单态模式 什么是单态模式 单态模式中关键的00P概念 抽象单态模式最小化示例 什么时候使用单态模式 小结 第Ⅲ部分 结构模式 第4章 装饰者模式 什么是装饰者模式? 装饰者模式中使用的重要的OOP概念 抽象装饰者最小化示例 简单的装饰者模式在Flashqb的应用:纸娃娃游戏 用各种表示正义和邪恶的属性对人物进行装饰 动态地选择具体的组件和装饰者:汽车销售网站 小结 第5章 适配器模式 什么是适配器模式? 对象适配器和类适配器 适配器模式中关键的OOP概念 实例:汽车驾驶适配器 实例扩展:使用鼠标驾驶汽车 实例:显示列表适配器 实例扩展:显示O'Reilly出版的新书目 小结 第6章 组合模式 什么是组合模式? 组合模式最小化示例 组合模式中关键的OOP概念 实例:歌曲播放列表 实例:利用反向运动学制作组合对象的动画效果 使用Flash内置的组合结构:显示列表 小结 第Ⅳ部分 行为模式 第7章 命令模式 什么是命令模式? 命令模式的最小化示例 命令模式中主要的OOP概念 简单的实例:宏命令 实例:控制数字的值 实例扩展:共享命令对象 实例扩展:实现恢复操作 实例:播客收音机 扩展实例:命令对象的动态赋值.. 小结 第8章 观察者模式 什么是观察者? 观察者模式中关键的00P概念 观察者模式最小化示例 实例:添加状态并标识用户 动态地改变状态 实例:采用不同的形式显示数据 小结 第9章 模板方法模式 什么是模板方法模式7 模板方法用到的主要()OP概念 最小示例:抽象模板方法 模板方法的灵活性 选择和播放声音和视频 钩起 小结 第10章 状态模式 用来创建一个状态机器的设计模式 状态设计模式用到的主要(30P概念 最小抽象状态设计模式 视频播放器具体状态应用程序 扩展状态设计:添加状态 添加更多的状态和流媒体播放能力 小结 第11章 策略模式 什么是策略模式? 策略模式使用的主要OOP概念 最小抽象策略模式 添加更多的具体策略和具体上下文环境 使用字符串策略 小结 第Ⅴ部分 复合模式 第12章 模型-视图-控制器模式 什么是模型-视图-控制器(MVC)模式? MVC元素间的通信 MVC里的嵌入模式 一个MVC模式的最小示例 MVC模式里的主要OOP概念 例子:天气地图 扩展示例:红外天气地图 示例:小汽车 自定义视图 添加一个追赶的小汽车 小结 第13章 对称代理模式 同步游戏和结果 对称代理模式 对称代理模式使用的主要00P概念 游戏玩家接口 游戏裁判员 在互联网上共享的信息 游戏玩家一代理类 支撑类和文档文件 小结...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值