ООП для чайников. Паттерны проектирования. Приспособленец (flyweight)
Следующий паттерн, — Приспособленец. Приспособленцы моделируют сущности, число которых слишком велико для представления объектами. В моем примере это отрисовка игровой карты (или участка карты). Например ваша карта состоит из плиток пола и стен, но по разному отрисовываются, с учетом света, времени суток, и других факторов. Создавать для каждого сегмента карты отдельный экземпляр, — слишком большая роскошь. Поэтому мы создаем по одному экземпляру каждого типа и с их помощью отрисовываем всю карту.
На диаграмме Приспособленец, выглядит следующим образом:
Имеет использовать Приспособленца если одновременно выполняются следующие условия:
- в приложении используется большое число обьектов, из-за этого высоки расходы на хранение
- большую часть состояния обьектов можно вынести из объекта Приспособленца
Код примера:
class Wall: def draw(self): return "#" class Floor: def draw(self): return "." class MapFactory: def __init__(self): self.classes = (Floor(), Wall()) def getMapClassByNum(self, num): return self.classes[num] if __name__ == '__main__': map = """ 111101111111 100000000001 100011110011 101000010001 111111111101""" factory = MapFactory() for line in map.split("\n")[1:]: for i in line: print(factory.getMapClassByNum(int(i)).draw()), print("") -------------------------------- # # # # . # # # # # # # # . . . . . . . . . . # # . . . # # # # . . # # # . # . . . . # . . . # # # # # # # # # # # . #
О статье
Вы сейчас читаете статью «ООП для чайников. Паттерны проектирования. Приспособленец (flyweight)»
- Написанную:
- 05.04.2010
- Категории:
- oop, programming
- Теги:
- паттерн, приспособленец

Нет комментариев
Перейти к форме добавления комментария | comments rss[?] | trackback uri [?]