11.10.2004, 16:31 | #1 |
Участник
|
Как лучше сделать?
Всех приветствую!
Сейчас у меня такая задача: сделать несколько импортов/экспортов данных между аксаптой и другими системами (к примеру экспортировать такие-то данные из аксапты в бэст). Решил я делать все эти задания в методах своего класса, наследника от RunBaseBatch. Все вроде замечательно, но таких методов несколько, т.е. перекрывая метод Run я не могу указать, что именно сейчас должно выполняться, соответсвенно класс я запустить не могу и не могу сделать для него MenuItem, чтобы пользователь запускал свои задачи. В идеале я бы хотел присвоить отдельный метод отдельному MenuItem'у, описав в начале каждого метода экземпляр своего класса и после диалога запустив обработку, но такое сделать вроде бы нельзя (?). Так что получается, что для каждого импорта/экспорта мне создавать новый класс? Или сделать один, а методы дергать практически одинаковыми Job'ами, различающимися только указанием методов? ..хотя можно с тем же успехом и разные классы создать имхо.. Как бы Вы сделали? |
|
11.10.2004, 16:59 | #2 |
Участник
|
1)делаешь иерархию классов. в Run() пишешь
PHP код:
2) в main() пишешь PHP код:
3) остается определится с тем , что будет параметром. Посмотри как работает иерархия классов разноски заказов как пример. |
|
12.10.2004, 09:46 | #3 |
Участник
|
Есть еще варианты?
|
|
12.10.2004, 12:20 | #4 |
Дмитрий Ерин
|
Может быть, я совершенно неправильно понял задачу, но, по-моему, достаточно сделать так:
1. Создать один класс SomeClass с N разными методами. 2. Создать перечисление SomeEnum с N элементами, соответствующими требуемым методам экспорта. 3. Создать N MenuItem-ов, в каждом из них заполнить свойства EnumTypeParameter = SomeEnum и EnumParameter = ... 4. В классе SomeClass создать статический метод main() приблизительно так: PHP код:
|
|
12.10.2004, 12:47 | #5 |
Участник
|
Если учесть, что технически ООП - это много-много свитчей, видимых только компилятору, то можно и так. Вопрос в том, что удобней - ковыряться в куче наследников или куче свитчей, каждый на пару-тройку страничек текста.
|
|
12.10.2004, 13:16 | #6 |
Участник
|
Спасибо за ответы!
Сделал по 2-му варианту, он для меня сейчас в самый раз (кстати откуда там свитчи на 2 листа? в них только название метода), просто 1-й вариант мне пока не по зубам еще, со временем наберусь опыта
В общем, спасибо! |
|
12.10.2004, 13:33 | #7 |
Участник
|
http://c2.com/cgi/wiki?StrategyPattern
+ http://c2.com/cgi/wiki?FactoryMethodPattern еще вариант KERNDOC://Classes/DictClass/callObject но это для людей у которых нет ничего святого |
|
12.10.2004, 13:57 | #8 |
Участник
|
Re: Спасибо за ответы!
Цитата:
Изначально опубликовано Smith
кстати откуда там свитчи на 2 листа? Именно поэтму и считается, что ООП-решения лучше расширяемы. Сваливаем потенциальный источник багов на плечи компилятора... и ловим уже его собственные баги |
|
Теги |
menuitem, switch, как правильно, наследование, ооп, рефакторинг, стиль программирования |
|
|