|
|
|
Интерфейсы в Java (чайнег)
|
|||
|---|---|---|---|
|
#18+
Задача: обрабатывать (читать) файлы MSExcel и OpenOffice (по структуре самих данных внутри они идентичны) С Java не работал, но почитав немного букварь, ощущение грубо, что хорошо бы задачу решать через создание интерфейса, с дальнейшим созданием отдельных классов, один будет обрабатывать файлы MSExcel, другой OpenOffice. Можно делать в лоб (операторами ветвления), но это ж не наш метод наверно ). Вопрос такой, пока не пойму как может выглядеть реализация интерфейса, т.е. как он должен будет понять, что если файл имеет расширение такое-то, то для его обработки используем такой-то класс, если другое, то другой класс или это тоже прописывается ифами? Примерно бы понять по синтаксису "Как это работает" ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 15:40 |
|
||
|
Интерфейсы в Java (чайнег)
|
|||
|---|---|---|---|
|
#18+
JDS, Я бы делал следующим образом. SpreadsheetsParser (interface) SpreadsheetsDTO(или коллекция) parse(); MSExcelParser implement SpreadsheetsParser OpenOfficeParser implement SpreadsheetsParser ParserFactory static SpreadsheetsParser getParset (String fileName) вернем верный парсер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 15:59 |
|
||
|
Интерфейсы в Java (чайнег)
|
|||
|---|---|---|---|
|
#18+
JDS, еще можно сделать Абтрактный парсер и там реализовать то что я написал в фабричном методе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 16:02 |
|
||
|
Интерфейсы в Java (чайнег)
|
|||
|---|---|---|---|
|
#18+
JDSфайлы MSExcel расширение *.xls? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 16:08 |
|
||
|
Интерфейсы в Java (чайнег)
|
|||
|---|---|---|---|
|
#18+
Petro123расширение *.xls? Нет есть и xlsx, иначе конечно можно было бы обойтись опенофисом наверно. Mad_Head , к сожалению пока с лета да и вообще мало понимаю ) Попробую еще покурить букварь про интерфейсы. Пока не пойму как написать интерфейс, чтобы он понимал какой класс использовать для своего метода ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 16:19 |
|
||
|
Интерфейсы в Java (чайнег)
|
|||
|---|---|---|---|
|
#18+
JDS, смотрите паттерн Фабричный метод ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 16:35 |
|
||
|
Интерфейсы в Java (чайнег)
|
|||
|---|---|---|---|
|
#18+
Mad_Head , код с wkpd : Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Правильно понимаю, что все равно же придется где-то смотреть расширение файла и уже в зависимости от этого делать либо ConcreteCreatorA(), либо ConcreteCreatorB() (т.е. выбирать либо MSO, либо OOffice), а уже вызов самих методов, например чтение ячейки можно сделать как бы через один метод т.н. фабричный метод. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 17:10 |
|
||
|
Интерфейсы в Java (чайнег)
|
|||
|---|---|---|---|
|
#18+
JDSНет есть и xlsx, иначе конечно можно было бы обойтись опенофисом наверно я тебя не понял, т.к. у MS двоичный закрытый формат. Что ты с ним собрался делать? А если один опенофис, то и задача твоя выродилась вообще. Так что покури пока, а потом чётче про задачу. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 17:10 |
|
||
|
Интерфейсы в Java (чайнег)
|
|||
|---|---|---|---|
|
#18+
Petro123я тебя не понял, т.к. у MS двоичный закрытый формат. Что ты с ним собрался делать? Тоже не понял, а org.apache.poi на что? Или о чем речь? ) Petro123А если один опенофис, то и задача твоя выродилась вообще. Нет не один опен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 17:20 |
|
||
|
Интерфейсы в Java (чайнег)
|
|||
|---|---|---|---|
|
#18+
JDSвсе равно же придется где-то смотреть расширение файла и уже в зависимости от этого Ну а как-же. Как не обобщай классы снаружи, всё равно где то в коде будет if )). С полиморфизмом _без_интерфейса_ будет так: if расширение = { переменная_базового_класса = new конкретный класс } а дальше уже одинаковы код для всего и вся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 17:44 |
|
||
|
Интерфейсы в Java (чайнег)
|
|||
|---|---|---|---|
|
#18+
ну или так: переменная_базового_класса = фабрикаДайОбъект('*.xls' маркер нужного объекта) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 17:48 |
|
||
|
Интерфейсы в Java (чайнег)
|
|||
|---|---|---|---|
|
#18+
Petro123 , вот. Теперь понял так и буду делать ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 17:50 |
|
||
|
Интерфейсы в Java (чайнег)
|
|||
|---|---|---|---|
|
#18+
Не нахожу, может кто подскажет, какую библиотеку можно юзать для чтения таблиц опенофиса? (*.ods) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2015, 14:33 |
|
||
|
Интерфейсы в Java (чайнег)
|
|||
|---|---|---|---|
|
#18+
Походу, надо подключать к проекту jar-ники прямо из опенофиса? Где бы нарыть примеры работы с OO из Java? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 14:51 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=120&tid=2124999]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 360ms |

| 0 / 0 |
