麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 辦公 > Flash > 正文

Flash AS教程:decorator Pattern

2020-07-17 13:19:12
字體:
來源:轉載
供稿:網友
上個星期買了本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());
}
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一区二区三区欧美日韩 | 羞羞视频免费视频欧美 | 国产一区二区成人在线 | 粉嫩粉嫩一区二区三区在线播放 | 久久男人天堂 | 国产免费www | 91精品国产一区二区三区四区在线 | 综合97 | 国产成人在线免费看 | 国产99精品 | 欧美日韩中文字幕在线视频 | 97精品国产高清在线看入口 | 国产乱轮视频 | 91久久国产综合精品女同国语 | 成人免费乱码大片a毛片视频网站 | 国产午夜精品一区二区三区四区 | va视频在线 | 国产一级二级毛片 | 久久55| 天天草夜夜爽 | 国产va在线观看 | 日韩精品久久久久久久电影99爱 | 久草在线手机观看 | 久久91亚洲精品久久91综合 | 久久99精品久久久久久236 | 日韩一级免费毛片 | 麻豆视频在线免费观看 | 国产精品毛片va一区二区三区 | 成人免费网站在线观看 | 色骚综合 | 日本a∨精品中文字幕在线 欧美1—12sexvideos | 欧美人xx| 成人福利在线视频 | 毛片大全免费看 | 国产日韩在线观看视频 | 一级片999| 欧美日本色 | 久久国产28 | 成人18免费观看 | 在线天堂中文在线资源网 | v片在线看 |