dotSITE
Work in Murano Software. Вопросы/Ответы Учебник по ASP.NET
новости материалы решения форумы группы настройки/о проекте

Flyweight

Паттерн flyweight применяется, когда нужно поддерживать множество мелких объектов, в котором можно выделить группы схожих.

        namespace Flyweight_DesignPattern
        {
            using System;
            using System.Collections;

            class FlyweightFactory 
            {
                private ArrayList pool = new ArrayList();

                public FlyweightFactory()
                {
                    /*
                    Элементы в пул могут добавляться либо при запуске,
                    либо по необходимости.
                    */

                    pool.Add(new ConcreteEvenFlyweight());      
                    pool.Add(new ConcreteUnevenFlyweight());            
                }

                public Flyweight GetFlyweight(int key)
                {
                    int i = key % 2;
                    return((Flyweight)pool[i]); 
                }
            }

            abstract class Flyweight 
            {
                abstract public void DoOperation(int extrinsicState);       
            }

            class UnsharedConcreteFlyweight : Flyweight
            {
                override public void DoOperation(int extrinsicState)
                {
                    
                }
            }

            class ConcreteEvenFlyweight : Flyweight
            {
                override public void DoOperation(int extrinsicState)
                {
                    Console.WriteLine("In ConcreteEvenFlyweight.DoOperation: {0}", extrinsicState);                     
                }
            }

            class ConcreteUnevenFlyweight : Flyweight
            {
                override public void DoOperation(int extrinsicState)
                {
                    Console.WriteLine("In ConcreteUnevenFlyweight.DoOperation: {0}", extrinsicState);           
                }   
            }

            public class Client
            {
                public static int Main(string[] args)
                {
                    int[] data = {1,2,3,4,5,6,7,8};
                    
                    FlyweightFactory f = new FlyweightFactory();
                    
                    int extrinsicState = 3;
                    foreach (int i in data)
                    {
                        Flyweight flyweight = f.GetFlyweight(i);
                        flyweight.DoOperation(extrinsicState);
                    }
                    
                    return 0;
                }
            }
        }
        

Back
Контакт Реклама на сайте Спонсорам Веб мастерам

Лицензионное соглашение - © 2000-2010 dotSITE
Хостинг .NET предоставлен PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development