面向对象技术
文章平均质量分 85
geniicheng222
这个作者很懒,什么都没留下…
展开
-
《重构》笔记 一 重构的基本概念
1.重构:对软件内部结构的一种调整,目的是在不改变软件之可察行为前提下,提高其理解性,降低其修改成本。 2.为何重构: 1. 改进代码设计(重构的最终目标就是 设计模式) 2.使代码更易被理解(提高代码质量) 3.帮助你找到臭虫 4.帮助你提高编程速度 3.什么时候重构呢? 三次法则,第一次做某事只管去做,第二次做类似的事会产生反感但是去做了...2009-02-02 09:45:05 · 119 阅读 · 0 评论 -
Facade 外观
Facade 外观,结构型模式,为子系统中的一组接口提供一个一致的界面,Facade定义了一个高层接口使得这个系统更加容易使用。 记得PureMVC里面就有用到Facade模式,有3个子系统组成的一个庞大的大的系统,view control mode,利用Facade对这些系统的进行有效的组织,仅提供给用户部分或全部的简单接口,方便用户操作。 Facade有如下的优点:1、 他对客户屏蔽...原创 2009-02-24 15:00:32 · 82 阅读 · 0 评论 -
Flyweight (享元)
Flyweight (享元)模式,是结构型模式,它是运用共享技术有效的支持大量细粒度的对象。避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类),Flyweight模式是一个提高程序效率和性能的模式,会大大加快程序的运行速度。 适用性:1、一个应用用了大量的对象,造成很大的存储开销。2、对象的大多数状态可以改变为外部状态3、如果删除对象的外部状态,...原创 2009-02-24 17:56:51 · 99 阅读 · 0 评论 -
Proxy 代理
Proxy 代理,为其他对象提供一个代理以控制这个对象。 Proxy 代理模式还是比较好理解的,一般风为虚拟代理和远程代理。 虚拟代理通常用于代理那些创建昂贵代价的对象以及那些急于立即创建的对象,直到它真正需要时才会被创建或初始化。比较常见的例子就是 网页 的图片,在还有flash里面的Loader类,虚拟代理还有一个好处就是惰性序列化,比如获得一个xml数据的代理就是一个很好的例...原创 2009-02-24 23:46:35 · 1351 阅读 · 0 评论 -
Chain of Responsibility 职责链 行为模式
Chain of Responsibility 职责链 行为模式,使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,知道有个对象处理它。 Chain of Responsibility让我想到的就是flash中的事件流。当一个事件定义为冒泡事件,并且出发这个事件的对象是这显示列表中,这时这个事件流就会从舞台到目标对象,再从...原创 2009-02-25 00:02:17 · 81 阅读 · 0 评论 -
Command 命令 行为模式
Command 命令 行为模式,将一个请求封装为一个对象,从而你可以用不同的请求对客户端进行参数化、对请求排队或记录请求日志,以及支持Redo,Undo操作。 PureMVC的Controller 就是用Command模式实现的,Command模式有一下5个元素 1、命令接口 2、具体命令 3、接受者 4、客户 5、调用者 命令接口是命...原创 2009-02-25 00:35:47 · 222 阅读 · 0 评论 -
Interpreter 解释器 行为模式
Interpreter 解释器 行为模式,给定一个语言,定义它的文法的一种表示,并且定义一个解释器,这个解释器使用该表示来解释语言中的例子。 这个模式,在《设计模式》里直接看不懂,我想它应该是一个很有趣的行为模式,是值得深入研究下去的,但是最近比较忙,以后有时间了再来好好研究一下。...原创 2009-02-25 00:40:03 · 76 阅读 · 0 评论 -
Iterator 迭代器 行为模式
Iterator 迭代器 行为模式,提供一种顺序访问一个聚合对象中的各个元素的方法,而又不破坏该聚合对象的内部表示。 别名游标,这个模式,在Composite模式的例子一时实际上已经用到了,而且在Flex中的也是有的。比如,Flex中有个类叫ArrayColllection有一个方法叫createCursor():IViewCursor。Iterator模式还是比较好理解的。 迭代器模...原创 2009-02-25 00:41:51 · 108 阅读 · 0 评论 -
Mediator 中介 行为模式
Mediator 中介 行为模式,用一个中介来封装一些列的对象操作。中介使得对象之间不需要显示的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。 面向对象鼓励将行为分布到各个对象中。这种分布可能会导致对象见有许多连接。在最坏的情况下,每一个对象都知道其他的对象。在PureMVC中就是使用Mediator,来中介对象之间的操作,对象只要和Mediator通信就可以了...原创 2009-02-25 00:44:12 · 94 阅读 · 0 评论 -
Memento 备忘录 行为模式
Memento 备忘录 行为模式,在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以将对象恢复到原先保存的状态。 参与者: Memento(备忘录) - 备忘录存储原发器对象的内部状态。原发器根据需要决定备忘录存储原发器的那些内部状态。 -防止原发器以外的其他对象访问备忘录。备忘录实际上有两个接口,管理者只能看到备忘录的窄...原创 2009-02-25 00:46:35 · 115 阅读 · 0 评论 -
Observer 观察者 行为模式
Observer 观察者 行为模式,定义对象的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于该对象的对象都会得到通知并被自动更新。 Observe模式也很好理解,恩,像flash中的事件侦听,像Rss,向报纸的订阅。 我拿PureMVC来举例吧,PureMVC是跨语言的,现在已经支持很多种语言了。PureMVC中的事件的传递,就没有用到flash本身的事件,而是采用了Ob...原创 2009-02-25 00:48:52 · 84 阅读 · 0 评论 -
State 状态 行为模式
State 状态 行为模式,允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 状态模式有很多种实现方法,但是他们的目标是一样的:对象类更改。 拿《Actionscript 3 设计模式》里面的例子用一下。 ...原创 2009-02-25 00:50:25 · 140 阅读 · 0 评论 -
Strategy 策略 行为模式
Strategy 策略 行为模式,定义一系列的算法,把他们一个一个的封装起来,并且使他们可以互相替换原创 2009-02-25 00:52:04 · 67 阅读 · 0 评论 -
Template Method 模板方法 行为模式
Template Method 模板方法 行为模式,定义一个操作中的算法骨架,而将这些步骤延迟到子类中实现。 。。。。。。。。。。。。。。。。原创 2009-02-25 00:54:13 · 92 阅读 · 0 评论 -
Composite 组合
Composite 组合模式,将对象组合成树形结构以表示“部分=整体”的层次结构。使得用户在处理单个对象和组合对象时具有一致性。 Composite最好的一个例子就 计算机的文件系统。 适用性:1、你想表达不封-整体的层次结构2、你希望client忽略组合对象于单个对象的不同,用户将统一的使用组合结构中的所有对象。 结构: 例子:根据一个xml的描述生成...原创 2009-02-23 23:45:40 · 71 阅读 · 0 评论 -
Decorator 装饰模式
Decorator 装饰模式,对象结构模式,动态的给对象添加额外的职责。就增加功能而言,Decorator 比生成子类更为灵活。 Decorator 又叫wrapper,相当于在原来的物体上面又套了个东西,但是不改变原来的接口。它是对某个对象添加一些功能而不是整个类。比如一个文本套了个边框接口没变,然后又套了个滚动条,接口还是没有变。 Decorator 在actionscript设计...原创 2009-02-23 23:42:41 · 95 阅读 · 0 评论 -
Bridge 桥接
Bridge 桥接,对象结构型模式,将抽象部分与实现部分分离,使他们都可以独立的变化。说句实话,我看《设计模式》的Bridge模式,看不懂,后来看了一个大杯、小杯的咖啡加不加奶的例子,看明白了Bridge模式的意图。 例子:比如有个鞋店,有男鞋女鞋两种鞋(包括鞋和送的东西也可以选择不要),但是目前只送一个小熊玩具,以后会送的东西可以让你挑选。 可能刚开始这样设计: ...原创 2009-02-23 23:11:22 · 87 阅读 · 0 评论 -
《重构》笔记 二 重新组织你的函数 Extract Methord
重新组织你的函数 Compsing Methords 一 Extract Methord 动机:Extract Methord是最常用的重构手法之一,当我看到一个过长函数或则一段需要注释才能让人理解用途的代码的时候,我会将这段代码放到独立的函数中去。如果函数的粒度都很小(finely grained)那么函数间彼此服用的机会就更大,其次,这会使高层函数读起来就像一系列注释,而且函数...2009-02-02 10:46:22 · 138 阅读 · 0 评论 -
《重构》笔记 二 重新组织你的函数 Inline Methord Inline Temp 。。
二 Inline Method 一个函数的本体应该于其名称同样清晰易懂。 动机:如果你遇到的函数,其内部代码和其名字同样清晰易懂,你因该去掉该函数。 做法:1.检查函数,确定它不具多态 2.找出这个函数的所有被调用点 3.将调用点替换为函数本体 4.编译测试 eg.private func...2009-02-02 11:30:31 · 87 阅读 · 0 评论 -
《重构》笔记 二 重新组织你的函数 Split Temporary Variable 。。
五 Split Temporary Variable 你的程序的有某个临时变量被赋值超过一次,她不是循环变量,也不是集用临时变量。 动机:临时变量的各种用途,其中某些用途会很自然的导致临时变量被多次赋值,如果是这样,就说明他们负担了过多的责任,(循环里面的那个不算他的任务就是那样的),那他们就应该被换掉,分为多个变量,没个变来那个承担一个责任,来清晰代码。 做法: 很简...2009-02-02 12:57:58 · 117 阅读 · 0 评论 -
《重构》笔记 二 重新组织你的函数 Remove Assignments t Parameters
六 Remove Assignments t Parameters 你的代码对参数进行赋值的动作。在As3 中除了那些 基原数据 如 String Number int uint Boolean 是安值传递,其余的传递的都是引用值。 所以在As 3.0 中不存在这个问题。 七 Replace Methord with Method Object 你有个大型函数,其中对局部变量...2009-02-02 14:38:39 · 100 阅读 · 0 评论 -
《重构》笔记 三 在对象之间搬移特性 MoveMethod
一。 Move Method 动机:函数搬移是重构理论的支柱。如果一个Class有太多的行为,或如果一个Class与另一个Class有太多合作而形成高度耦合,就需要搬移函数。通过这种手段,我可以是系统中的Class更简单,这些Class最终也将更干净利落的实现系统交付的任务。常常我会浏览Class的所有函数,从中寻找这样的函数:使用另一个对象的次数比使用自己所驻对象的次数还多。一旦我移动了一...2009-02-02 15:12:08 · 100 阅读 · 0 评论 -
《重构》笔记五 简化条件表达式 Decompose Conditional
一 Decompose Conditional 分解条件式你有一个复杂的的if then else 语句 动机: 程序之中,复杂的条件逻辑是导致复杂度上升的地点之一。一必须编写代码来检查不同的条件分支、根据不同的条件分支来做不同的事情,然后很快你就得到了一串很长的函数。大型函数的自身就会使代码的可读性下降,而条件逻辑则会使代码更难阅读。 做法: 1.将if 段落提炼出来...2009-02-02 16:07:26 · 148 阅读 · 0 评论 -
《重构》笔记 六 简化函数的调用 Rename Method 。。。
一 Rename Method函数的名称和函数本体的语义差太大了,或者没有准确表达出,函数本体【做什么】 二 Add Parameter三 Remove Parameter 根据需求而定。 四 Separate Query from Modifier将查询函数和修改函数分离getTotalOutStandingAndSetReadyForSummaries =...2009-02-02 16:19:00 · 103 阅读 · 0 评论 -
程序员的修炼之道 心得
过年过来比较闲,于是就把《程序员的修炼之道》看了下,从小工到专家 from joureyman to master。受益很多。 一个注重实效的程序员的特征是什么呢,是他们在处理问题、寻求解决方案时的态度、风格、哲学。 每年至少学习一种新的语言。 每季度阅读一本技术书籍 也要阅读非技术书籍 上课 参加本地用户组织 试验不同的工作...2009-02-11 09:21:37 · 122 阅读 · 0 评论 -
AbstractFactory 抽象工厂
AbstractFactory 抽象工厂模式。《设计模式》里面是这样定义的:提供一个创建一系列相关或相互以来对象的接口,而无需指定他们具体的类。 AbstractFactory模式,是一种创建模式,在创建若干个系列的产品时,(但是每一系列构成已经确定不变)时变得容易,它分离了具体的类,有利于产品的一致性。但是若果一个系列的产品若果需要增加,恐怕AbstractFacto...原创 2009-02-23 11:00:58 · 83 阅读 · 0 评论 -
Builder 模式
Builder 模式,生成器,将一个复杂对象的构建鱼他的表示分离,使得同样的创建过程可以创建不同的表示。Builder与AbsctactFactory模式相似,也是创建复杂对象的,但是AbsctactFactory侧重于多个系列的产品是复杂的。而Builder在是一步一步的构造复杂的对象,在最后返回产品。 以下情况应当使用建造者模式:1、 需要生成的产品对象有复杂的内部结构。2、 需要生成...原创 2009-02-23 13:54:33 · 106 阅读 · 0 评论 -
Factory Method 工厂方法
Factory Method 工厂方法,创建型 模式,她定义一个用于创建对象的接口,让子类去决定实例化那个子类。这个模式已经在 Abstract Factory中用过了。 适用性:1、当一个类不知道它所必须创建的对象类的时候2、当一个类希望由他的子类来指定它所创建的对象的时候3、当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将那一个帮助子类是代理者这一信息局部变化的时候...原创 2009-02-23 14:09:30 · 90 阅读 · 0 评论 -
Prototype 原型 Singleton单件
Prototype 原型,创建型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建心的对象。 适用性:1、 当要实例化的类是在运行时刻指定的2、为了避免创建一个鱼产品类层次平行的工厂类层次时3、当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆他们,可能比每次用合适的状态手工实例化该类要更方便点。 Prototype模式允许一个对象再创建另外一个可定制...原创 2009-02-23 14:43:20 · 95 阅读 · 0 评论 -
Adapter 适配器
Adapter 适配器,类对象结构型模式,将一个类的接口转化为客户希望的另一个接口。Adapter使得原本由于接口不兼容而不能在一起工作的类可以在一起工作。 适用性:1、你想使用一个已经存在的类,但是他的接口不符合你的要求。2、你想创建一个可以复用的类,该类可以与那些接口可能不一致的类协同工作。3、你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配他们的接口。对象适配器可以...原创 2009-02-23 18:44:26 · 125 阅读 · 0 评论 -
Visitor 访问者 行为模式
Visitor 访问者 行为模式,表示一个作用于某个对象结构中的各个元素的操作。它使你可以在不改变各个元素的类的前提下定义作用于这些元素的操作。 。。。。。。。。。。。。。...原创 2009-02-25 00:55:51 · 82 阅读 · 0 评论