|
|
|
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