Flash / Flex / ActionScript/Class/Composition

Материал из Web эксперт
Перейти к: навигация, поиск

Class composition

 
package
{
    public class Employee
    {
        public function doWork():int
        {
            return 1;
        }
    }
}
    class Manager
    {
        protected var employees:Array;
        public function Manager(numberOfEmployees:int)
        {
            employees = new Array();
            for (var i:int = 0; i < numberOfEmployees; i++)
            {
                employees[i] = new Employee();
            }
        }
        public function delegateWork():int
        {
            var totalWork:int = 0;
            for each (var employee:Employee in employees)
            {
                totalWork += employee.doWork();
            }
            return totalWork;
        }
    }
    class Company
    {
        public function Company()
        {
            var manager:Manager = new Manager(10);
            var completedWork:int = manager.delegateWork();
            trace(completedWork); //10
        }
    }



Inheritance vs. Composition

 
package
{
    public class House
    {
        public var kitchen:Kitchen;
        public var livingroom:LivingRoom;
        public var bedrooms:Array;
        public function House(numberOfBeds:int)
        {
            kitchen = new Kitchen();
            livingroom = new LivingRoom();
            bedrooms = new Array();
            for (var i:int = 0; i < numberOfBeds; i++)
            {
                bedrooms[i] = new Bedroom();
            }
        }
    }
}
class Kitchen{
}
class LivingRoom{
}
class Bedroom{
}