zoukankan      html  css  js  c++  java
  • 《大话设计模式》——附录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 }
  • 相关阅读:
    可实现B站 蒙版弹幕 效果的前端组件 —— Barrage UI
    C# 中的"yield"使用
    不遮挡人物弹幕是怎么实现的——图片蒙版效果-webkit-mask
    使用eslint检查代码质量
    vue 项目中assets 和static的区别
    快速生成html文本文档——typora
    VsCode中好用的git源代码管理插件GitLens
    C# 根据前台校验的值,决定是否执行后台方法
    C# 从字符串中取出英文字母
    C# 科学计数法转换成数字
  • 原文地址:https://www.cnblogs.com/iwhk/p/2725546.html
Copyright © 2011-2022 走看看