Flash AS教程:decorator Pattern

互联网   发布时间:2008-10-06 01:25:10   作者:佚名   我要评论
上个星期买了本Head First 的《设计模式》,开始学习了设计模式了,感觉颇多。想想我就是拿着脚本语言来编程的,弄那么深奥的干嘛呢,估计是无聊吧。推荐朋友也看,他说没有空,是啊,现在的年轻人没有一个不忙的。说是让我整理出笔记让他看看。 这本书是针对java 写的。
上个星期买了本Head First 的《设计模式》,开始学习了设计模式了,感觉颇多。想想我就是拿着脚本语言来编程的,弄那么深奥的干嘛呢,估计是无聊吧。推荐朋友也看,他说没有空,是啊,现在的年轻人没有一个不忙的。说是让我整理出笔记让他看看。
这本书是针对java 写的。没学过java 不过语法跟flash 的脚本语言as3 还是很相似的。
另外借助于一本 《Advanced.ActionScript.3.with.Design.Patterns》,这个也是设计模式。这两本书的区别主要在于 行文叙事,读head first 那书感觉很有趣无需什么基础,读《Advanced.ActionScript.3.with.Design.Patterns》,感觉没有了,为什么呢?那是英文版的,我英文不好,这也是他们的第二个区别。而我的行文则是用as3 来 实现《设计模式》中的所有模式,基本上谈实现,不谈理解。本人非程序员出身,写的东西不太好理解哦。呵呵。
第一个首先讲的是装饰者模式:(decorator Pattern)
下面的程序代码背景:饮料店卖一些饮料Beverage(如咖啡,茶…),在饮料中可以增加调料(如奶,糖..),使他的味道更可口些,就是说调料是来装饰饮料的。而这一些都要钱才能享受哦。
文件格式基本上是一个类一个文件
//第一个as文件所有饮料包括调料的基类 有一个描述方法 和一个费用方法
package com.dp.decorator {
public class Beverage {
public var description : String = “unkonwn Beverage”;

public function getDescription() : String {
return description;
}
public function cost() : Number {
return 0;
}
}
}
//第二个as 文件继承自饮料,是一种具体的饮料(浓咖啡Espresso) ,所有的调料都可以来装饰它(理论上)。
package com.dp.decorator {
import com.dp.decorator.Beverage;
/**
* @author tkj
*/
public class Espresso extends Beverage {
public function Espresso() {
description = “Espresso”;
}
public override functioncost() : Number {
return 1.99;
}
}
}
//这是第三个as文件继承自饮料,是一种抽象的饮料的调料CondimentDecorator,所有的调料继承自它,(我在实现的时候发现其实所有的调料可以直接继承自饮料也可以。),它的子类们会覆盖它的一切。
package com.dp.decorator {
import com.dp.decorator.Beverage;

/**
* @author tkj
*/
public class CondimentDecorator extends Beverage {
public function CondimentDecorator() {

}
public override function getDescription():String{
return description;

}
}
}
//第四个as文件,是具体的调料mocha(摩卡),它覆盖了上面的调料类,它的构造函数传入的对象就是一个饮料实例。它返回的描述getDescription() 是这个调料的描述和传入的这个实例的描述,它返回的价格cost()是这种调料的价格和传入的实例的价格。有点递归的味道。
package com.dp.decorator {
import com.dp.decorator.Beverage;
import com.dp.decorator.CondimentDecorator;
/**
* @author tkj
*/
public class Mocha extends CondimentDecorator {
publicvar yinliao : Beverage;
public function Mocha(yinliao1 : Beverage) {
this.yinliao = yinliao1;

}
public override functiongetDescription() : String {
return yinliao.getDescription() “.Mocha”;
}
public override function cost() : Number {
return yinliao.cost() 0.20;
}
}
}
//第五个as文件 是另一个调料的子类Soy豆沫跟上一个类似
package com.dp.decorator {
import com.dp.decorator.Beverage;
import com.dp.decorator.CondimentDecorator;
/**
* @author tkj
*/
public class Soy extends CondimentDecorator {
publicvar yinliao : Beverage;
public function Soy(yinliao1 : Beverage) {
this.yinliao = yinliao1;

}
public override functiongetDescription() : String {
return yinliao.getDescription() “.Soy “;
}
public override function cost() : Number {
return yinliao.cost() 0.3;
}
}
}
//第六个类,就是使用上述模式了,介绍看代码内部的注解。
package {
import flash.display.Sprite;
import com.dp.decorator.*;
/**
* @author tkj
*/
public class Dinggou extends Sprite {
public function Dinggou() {
//点一种饮料,注意类型Beverage,这个是在上面所有类中的通行证.一开始没有注意在这里摔了
var yinliao1 : Beverage = new Espresso();
//加点摩卡
yinliao1 = new Mocha(yinliao1);
//再加点摩卡
yinliao1 = new Mocha(yinliao1);
//加点豆沫
yinliao1 = new Soy(yinliao1);
//再加点摩卡(不会还不够吧?要不够还可以再加哦!)
yinliao1 = new Mocha(yinliao1);
//够了,结帐。
trace(yinliao1.getDescription() “$” yinliao1.cost());
}
}
}

相关文章

  • flash cs6鼠标跟随效果实现代码分享

    flash cs6想要实现鼠标跟随效果?该怎么制作呢?今天我们就来看看使用as2.0实现鼠标跟随效果的教程,需要的朋友可以参考下
    2019-05-19
  • Flash cs6怎么使用代码输入中英文文本?

    Flash cs6怎么使用代码输入中英文文本?Flash cs6中可以使用文字工具直接输入文本,也可以使用代码来输入文本,该怎么使用代码输入文本呢?请看下文详细的教程,需要的朋友
    2018-03-11
  • flash as3.0怎么定义抽象类和抽象?

    flash as3.0抽象类怎么定义? as3.0中有很多抽象类,该怎么定义抽象类和抽象方法呢?下面我们就来看看简单的例子,需要的朋友可以参考下http://www.jb51.net/softs/408402.
    2018-02-28
  • flash cs6中怎么使用ActionScript3.0?

    flash cs6中怎么使用ActionScript3.0?flash cs6中想要使用ActionScript3.0功能,该怎么使用呢?下面我们就来看看详细的教程,需要的朋友可以参考下
    2018-01-25
  • Flash中怎么实现鼠标点击决定图像位置?

    本教程给大家分享一个Flash小教程,教大家在Flash CS6中怎么实现鼠标点击决定图像位置?方法很简单,感兴趣的朋友欢迎前来一起分享学习
    2018-01-12
  • Flash中如何用代码将图片放在自己想要的舞台位置?

    本教程教脚本之家的ActionScript教程学习者在Flash中如何用代码将图片放在自己想要的舞台位置,教程讲解的详细,感兴趣的朋友欢迎前来分享学习
    2017-11-20
  • 在Flash CS6中使用with函数绘制背景图教程

    本教程教脚本之家的ActionScript教程学习者如何在Flash CS6中使用with函数绘制背景图?教程一步步讲解的挺详细,方法也不难,非常适合Flash新手入门学习
    2017-11-18
  • Flash怎么设置元件坐标?flash使用代码设置元件的坐标的教程

    Flash怎么设置元件坐标?flash中导如的元件需要添加坐标,该怎么定位元件坐标呢?下面我们就来看看flash使用代码设置元件的坐标的教程,需要的朋友可以参考下
    2017-10-11
  • Flash怎么制作来回摇摆的花朵的动画?

    Flash怎么制作来回摇摆的花朵的动画?Flash中想要给花朵制作一段摇摆的动画效果,该怎么制作呢?下面我们就来看看详细的教程,很简单,需要的朋友可以参考下
    2017-05-23
  • Flash怎么制作流动七彩色的文字?

    Flash怎么制作流动七彩色的文字?想要让文字动起来,该怎么使用flash给文字制作一个流动七彩色的动画呢?下面我们就来看看详细的教程,需要的朋友可以参考下
    2017-04-23

最新评论