每天學一點flash(51) 原廠模式

來源:互聯網
上載者:User

  一個工廠可以生產很多的產品,各種各樣五花八門的產品。這些產品是通過工廠生產出來的,一個工廠可以生產這些產品。這樣我們可以聯想到自己所寫的代碼。原廠模式解決了建立執行個體化的過程。典型的例子就是計算機的問題。面試人員同樣很喜歡把這樣的題目考察應聘者。看是否有一種熟悉的物件導向思維,把代碼封裝,實現代碼的重用性,繼承基類。擴充自己所要實現的功能。

 

物件導向的三大特性:封裝性,繼承,多態

   像as3.0那樣,我們可以實現一些簡單的做法,例如我要計算面積這樣的方法作為基類。然後我們用繼續的方法繼承基類原本的方法,但是我們要計算三角形面積,或者正方形面積,這些都是很簡單,繼承了基類的方法,並不是我們所要的結果,這時候我們需要同過override 聲明來重寫方法,做到繼承所要的方法。

//基類

package {

 public class Operation {
  private var StrNumA:Number=0;
  private var StrNumB:Number=0;
  public function set SetNumA(Num:Number):void {
   StrNumA=Num;
  }
  
  public function set SetNumB(Num:Number):void {
   StrNumB=Num;
  }
  public function get GetNumA():Number {
   return StrNumA;
  }
  public function get GetNumB():Number {
   return StrNumB;
  }
  public function Result():Number {
   var Myresult:Number=0;
   return Myresult;
  }
 }
}//運算

 

//加法繼承基類

package {
 public class Add extends Operation {
  private var NumA:Number;
  private var NumB:Number;
  
  override public function set SetNumA(Num:Number):void {
   NumA=Num;
  }
  
  override public function set SetNumB(Num:Number):void {
   NumB=Num;
  }
  override public function get GetNumA():Number {
   return NumA;
  }
  
  override public function get GetNumB():Number {
   return NumB;
  }
  
  
  override public function Result():Number {
   var Myresult:Number=0;
   Myresult=NumA+NumB;
   return Myresult;

  }
 }
}

 

 

//減法繼承基類

package{
 public class Sub extends Operation{
 private var NumA:Number;
 private var NumB:Number;
 override public function set SetNumA(Num:Number):void {
   NumA=Num;
  }
  
  override public function set SetNumB(Num:Number):void {
   NumB=Num;
  }
  override public function get GetNumA():Number {
   return NumA;
  }
  
  override public function get GetNumB():Number {
   return NumB;
  }
 override public function Result():Number{
  var Myresult;
  Myresult=NumA-NumB;
  return Myresult;
  
  }
  
  
  }
 
 
 }

 

//繼承基類

package{
 public class Mul extends Operation{
 private var NumA:Number;
 private var NumB:Number;
 override public function set SetNumA(Num:Number):void {
   NumA=Num;
  }
  
  override public function set SetNumB(Num:Number):void {
   NumB=Num;
  }
  override public function get GetNumA():Number {
   return NumA;
  }
  
  override public function get GetNumB():Number {
   return NumB;
  }
 override public function Result():Number{
  var Myresult;
  Myresult=NumA*NumB;
  return Myresult;
  
  }
  
  
  }
 
 
 }

//繼承基類

package{
 public class Div extends Operation{
 private var NumA:Number;
 private var NumB:Number;
 override public function set SetNumA(Num:Number):void {
   NumA=Num;
  }
  
  override public function set SetNumB(Num:Number):void {
   NumB=Num;
  }
  override public function get GetNumA():Number {
   return NumA;
  }
  
  override public function get GetNumB():Number {
   return NumB;
  }
 override public function Result():Number{
 var Myresult:Number=0;
  if(NumB==0)trace("cuowo");//這裡還要處理,以防除數為o
  Myresult=NumA/NumB;
  return Myresult;
  
  }
  
  
  }
 
 
 }

 

 

 

//工廠

package {
 public class OperationFactory {
  public static function CreateOperate(str:String):Operation {
   var op:Operation;
   switch (str) {
    case "+" :
     op=new Add();
     trace("+");
     break;

    case "-" :
     op=new Sub();
     break;

    case "*" :
     op=new Mul();
     break;

    case "/" :
     op=new Div();
     break;

   }
   return op;

  }

 }
}

 

 

還有一個用戶端:這裡還要做其他處理才可以完成我們的效果

package {

 import flash.display.MovieClip;
 import flash.display.*;
 import flash.events.*;
 import flash.text.*;
 public class Main extends MovieClip {
  var oper:Operation;

  public function Main() {

   oper=OperationFactory.CreateOperate("-");
   oper.SetNumA=2;
   oper.SetNumB=3;
   trace(oper.GetNumB);
   var Myresult2:Number=oper.Result();
   trace(Myresult2);
   }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.