Понижение Flex компонентов - Лучшая практика - PullRequest
0 голосов
/ 03 июля 2010

Очень часто я сталкиваюсь с той же проблемой с Flex: когда я создаю обложку для компонента spark или создаю новый компонент spark на основе другого компонента spark, я наследую свойства, которые мне не нужны. Например, когда я создаю собственный скин для spark.components.Panel, мне не нужен RectangularDropShadow. На данный момент, чтобы избавиться от него, я удаляю его из кода MXML и создаю открытую переменную в AS того же типа, что и в идентификаторе удаленного компонента. Я делаю это, чтобы удовлетворить принцип Лискова для ООП, и он работает (http://en.wikipedia.org/wiki/Liskov_substitution_principle), но у меня есть неиспользуемые свойства / переменные, что нехорошо. Я не думаю, что это лучший способ, которым это можно сделать.

Конечно, есть другой подход: чтобы создать пользовательскую панель без ненужных унаследованных функций spark.components.Panel Мне нужно создать собственную пользовательскую панель, унаследованную, например, от суперкласса spark.components.Panel. Этот подход подразумевает некоторую дополнительную работу, но это прямой подход ООП.

Но, может быть, есть другие специфичные для Flex техники, которые я пока не знаю?

Я хотел бы знать, как Flex-гуру справляются с этой проблемой. Все ваши идеи и предложения приветствуются!

Ответы [ 2 ]

1 голос
/ 03 июля 2010

Я не уверен, что это то, что вы ищете, но вы можете использовать Исключить метаданные , чтобы указать подсказке кода игнорировать стиль или свойство.

Нередко во Flex Framework можно найти код, который исключает свойство, а затем переопределяет метод получения и установки, чтобы ничего не делать.Это в метаданных:

[Exclude(name="label", kind="property")] 

И это как код:

override public get function label():String{return null}
override public set function label(value:String):void { }

Вы можете удалить стили, используя:

[Exclude(name="RectangularDropShadow", kind="style")] 

Конечно, это только влияетподсказка кода.Код для реализации стиля, скорее всего, все еще будет в вашем компоненте.

То, о чем вы говорите, это просто природа наследования.Почему для вас важно удалить эти стили / свойства из кода?

1 голос
/ 03 июля 2010

Хорошо, если это относится только к компонентам Flex, создающим обложки, вы можете легко , а не использовать класс RectangularDropShadow, вместо этого расширив ProgrammaticSkin или свой собственный класс ProgrammaticSkin, который реализует методы IProgrammaticSkins.

Цитата:

Конечно, есть другой подход: Для того, чтобы создать пользовательскую панель без ненужных унаследованных функций spark.components.Panel, я должен создать свою собственную панель по наследству из супер класса spark.components.Panel, например.

Что касается этого, я думаю, что вы слишком беспокоитесь об этом. Конечно, делайте все, что вам удобнее, но одно из ограничений архитектурного проектирования Flex состоит в том, чтобы позволить разработчикам быстро разрабатывать RIA, не беспокоясь о таких неприятных мелочах, как управление памятью. Однако, спасибо вам за беспокойство по поводу ненужных функций и потерянных ресурсов, но я не думаю, что это необходимо, потому что создание собственного класса Panel будет пустой тратой времени каждый раз, когда вам понадобится немного другой набор функций. Но, эй, как будто моя мама всегда говорила: «Свободная память - это пустая трата памяти!»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...