Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Интерфейсы в Java (чайнег) / 15 сообщений из 15, страница 1 из 1
26.08.2015, 15:40
    #39036482
JDS
JDS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
Задача: обрабатывать (читать) файлы MSExcel и OpenOffice (по структуре самих данных внутри они идентичны)
С Java не работал, но почитав немного букварь, ощущение грубо, что хорошо бы задачу решать через создание интерфейса, с дальнейшим созданием отдельных классов, один будет обрабатывать файлы MSExcel, другой OpenOffice.
Можно делать в лоб (операторами ветвления), но это ж не наш метод наверно ).

Вопрос такой, пока не пойму как может выглядеть реализация интерфейса, т.е. как он должен будет понять, что если файл имеет расширение такое-то, то для его обработки используем такой-то класс, если другое, то другой класс или это тоже прописывается ифами? Примерно бы понять по синтаксису "Как это работает" )
...
Рейтинг: 0 / 0
26.08.2015, 15:59
    #39036510
Mad_Head
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
JDS,

Я бы делал следующим образом.
SpreadsheetsParser (interface)
SpreadsheetsDTO(или коллекция) parse();

MSExcelParser implement SpreadsheetsParser

OpenOfficeParser implement SpreadsheetsParser

ParserFactory
static SpreadsheetsParser getParset (String fileName)
вернем верный парсер
...
Рейтинг: 0 / 0
26.08.2015, 16:02
    #39036518
Mad_Head
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
JDS,

еще можно сделать Абтрактный парсер и там реализовать то что я написал в фабричном методе
...
Рейтинг: 0 / 0
26.08.2015, 16:08
    #39036529
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
JDSфайлы MSExcel
расширение *.xls?
...
Рейтинг: 0 / 0
26.08.2015, 16:19
    #39036555
JDS
JDS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
Petro123расширение *.xls?
Нет есть и xlsx, иначе конечно можно было бы обойтись опенофисом наверно.
Mad_Head , к сожалению пока с лета да и вообще мало понимаю )
Попробую еще покурить букварь про интерфейсы. Пока не пойму как написать интерфейс, чтобы он понимал какой класс использовать для своего метода )
...
Рейтинг: 0 / 0
26.08.2015, 16:35
    #39036574
Mad_Head
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
JDS,

смотрите паттерн Фабричный метод
...
Рейтинг: 0 / 0
26.08.2015, 17:10
    #39036655
JDS
JDS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
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.
abstract class Product { }

class ConcreteProductA extends Product { }

class ConcreteProductB extends Product { }

abstract class Creator {
    public abstract Product factoryMethod();
}

class ConcreteCreatorA extends Creator {
    @Override
    public Product factoryMethod() { return new ConcreteProductA(); }
}

class ConcreteCreatorB extends Creator {
    @Override
    public Product factoryMethod() { return new ConcreteProductB(); }
}

public class FactoryMethodExample {
    public static void main(String[] args) {
        // an array of creators
        Creator[] creators = {new ConcreteCreatorA(), new ConcreteCreatorB()};
        // iterate over creators and create products
        for (Creator creator: creators) {
            Product product = creator.factoryMethod();
            System.out.printf("Created {%s}\n", product.getClass());
        }
    }
}



Правильно понимаю, что все равно же придется где-то смотреть расширение файла и уже в зависимости от этого делать либо ConcreteCreatorA(), либо ConcreteCreatorB() (т.е. выбирать либо MSO, либо OOffice), а уже вызов самих методов, например чтение ячейки можно сделать как бы через один метод т.н. фабричный метод. Так?
...
Рейтинг: 0 / 0
26.08.2015, 17:10
    #39036657
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
JDSНет есть и xlsx, иначе конечно можно было бы обойтись опенофисом наверно
я тебя не понял, т.к. у MS двоичный закрытый формат.
Что ты с ним собрался делать?
А если один опенофис, то и задача твоя выродилась вообще.
Так что покури пока, а потом чётче про задачу.
IMHO
...
Рейтинг: 0 / 0
26.08.2015, 17:20
    #39036678
JDS
JDS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
Petro123я тебя не понял, т.к. у MS двоичный закрытый формат. Что ты с ним собрался делать?
Тоже не понял, а org.apache.poi на что? Или о чем речь? )
Petro123А если один опенофис, то и задача твоя выродилась вообще.
Нет не один опен.
...
Рейтинг: 0 / 0
26.08.2015, 17:44
    #39036725
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
JDSвсе равно же придется где-то смотреть расширение файла и уже в зависимости от этого
Ну а как-же. Как не обобщай классы снаружи, всё равно где то в коде будет if )).
С полиморфизмом _без_интерфейса_ будет так:
if расширение =
{
переменная_базового_класса = new конкретный класс
}
а дальше уже одинаковы код для всего и вся
...
Рейтинг: 0 / 0
26.08.2015, 17:48
    #39036729
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
ну или так:
переменная_базового_класса = фабрикаДайОбъект('*.xls' маркер нужного объекта)
...
Рейтинг: 0 / 0
26.08.2015, 17:50
    #39036734
JDS
JDS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
Petro123 , вот. Теперь понял так и буду делать )
...
Рейтинг: 0 / 0
27.08.2015, 14:33
    #39037535
JDS
JDS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
Не нахожу, может кто подскажет, какую библиотеку можно юзать для чтения таблиц опенофиса? (*.ods)
...
Рейтинг: 0 / 0
28.08.2015, 14:51
    #39038541
JDS
JDS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
Походу, надо подключать к проекту jar-ники прямо из опенофиса?
Где бы нарыть примеры работы с OO из Java?
...
Рейтинг: 0 / 0
28.08.2015, 15:04
    #39038557
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интерфейсы в Java (чайнег)
JDS,
ну дак тему соответствующую создай.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Интерфейсы в Java (чайнег) / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]