《大话设计模式》——附录A 封装、继承、多态

  对于不是纯软件开发出身的Flasher,什么是设计模式,什么是OOP编程,简直就是一头雾水。但每每回头看自己写的一坨坨“屎”一样的代码,心都碎了,是应该是时候要改变了。

  从网上搜索了一下资源,买了本程杰的《大话设计模式》,粗看了一篇感觉很不错,通过故事讲述程序如何设计的,使高深的OOP编程思想变得通俗易懂,是对于苦恼、困惑的oop编程初学者的救星啊。虽然里面的代码是C#版本的,但基本思想也是能看明白的。我也打算将书中C#代码改为AS3,正如书中作者所建议读者多自己动手练习。

  仅供参考

  A6封装、A7继承、A8多态

  

Main
 1 package {
 2     import flash.display.Sprite;
 3     
 4     public class Main extends Sprite{
 5         public function Main(){
 6             var cat:Cat=new Cat();
 7             cat.shoutNum =4;
 8             trace(cat.Shout());
 9             
10             var dog:Dog = new Dog();
11             dog.shoutNum = 5;
12             trace(dog.Shout());
13         }
14     }
15 }

 

Animal
 1 package  {
 2     public class Animal {
 3         protected var name:String = "";
 4         protected var _shoutNum:uint = 3;
 5         
 6         /**
 7          * AS3不支持重载,通过“...args”关键字实现,分析args的内容来判断执行不同的分支。
 8          * @param args
 9          * 
10          */        
11         public function Animal(){
12             
13         }
14         
15         protected function setName(...args):void{
16             if(args.length == 0){
17                 this.name = "无名"
18             }else if (args.length ==1){
19                 this.name = args[0];    
20             }else {
21                 trace("参数长度大于1")
22             }
23         }
24         
25         public function Shout():String{
26             var result:String = "";
27             for(var i:uint=0; i < _shoutNum; i++){
28                 result += getShoutSound();
29             }
30             return "我的名字叫" + this.name + result;
31         }
32         
33         public function getShoutSound():String{
34             return "";
35         }
36         
37         public function get shoutNum():uint{
38             return _shoutNum;
39         }
40         
41         public function set shoutNum(value:uint):void{
42             if(value <= 10){
43                 _shoutNum = value;
44             }
45             else{
46                 _shoutNum = 10;
47             }
48         }
49     }
50 }

 

Cat
 1 package {
 2     public class Cat extends Animal{
 3             
 4         public function Cat(...args){
 5             super.setName(args);
 6         }
 7         
 8         public override function getShoutSound():String{
 9             return "喵";
10         }
11     }
12 }

 

Dog
 1 package  {
 2     
 3     public class Dog extends Animal{
 4         public function Dog(...args){
 5             super.setName(args);
 6         }
 7         
 8         public override function getShoutSound():String{
 9             return "汪";
10         }
11     }
12 }

 

 

posted @ 2012-10-16 10:28  FlashHK  阅读(334)  评论(0编辑  收藏  举报