AS3设计-工厂模式(一)

以前接触一种 工厂模式 , 算是工厂模式吧

  1. package com.ainy.myinterface{

  2.    public interface IAnimal{

  3.        function eat( $food : String = "") : void;

  4.    }

  5. }

创建一个类继承 -> IAnimal , 例如:

  1. package com.ainy.animals{

  2.    import com.ainy.myinterface.IAnimal;

  3.    public class Dog implements IAnimal{

  4.        public function Dog(){

  5.            eat("Gt");

  6.        }

  7.        public function eat($food:String = "" ):void{

  8.            trace("Dog eat "+$food);

  9.        }

  10.        public function ss() : void{

  11.            trace("Dog eat  ssss");

  12.        }

  13.    }

}

创建一个工厂来创建这些 Animals


  1. package com.ainy.factorymanager{

  2.    import com.ainy.animals.Cat;

  3.    import com.ainy.animals.Dog;


  4.    public class AnimalFactory{

  5.        private static var $instance : AnimalFactory;

  6.        public static function instance() : AnimalFactory{

  7.            if($instance == null ) $instance = new AnimalFactory();

  8.            return $instance;

  9.        }

  10.        public function AnimalFactory(){

  11.            if($instance != null ){

  12.                throw new Error("AnimalFactory 被设计成单例!!!");

  13.            }else{

  14.                $instance = this;

  15.            }

  16.            initData();

  17.        }

  18.        public function getDog() : Dog{

  19.            return new Dog();

  20.        }

  21.        private var cat : Cat;

  22.        private function initData() : void{

  23.            cat = new Cat();

  24.        }

  25.        public function getCat() : Cat{

  26.            return this.cat;

  27.        }

  28.    }

  29. }

    此方案能最大限度的保证实例 : Cat/Dog的public 方法.在AnimalFactory类中,能够预先初始化一些实例,但是,比较麻烦,每一次新建一个动物实例,都要写入AnimalFactory类中.



你可能感兴趣的:(工厂模式,as3)