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

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

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

MSExcelParser implement SpreadsheetsParser

OpenOfficeParser implement SpreadsheetsParser

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

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

смотрите паттерн Фабричный метод
...
Рейтинг: 0 / 0
Интерфейсы в Java (чайнег)
    #39036655
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Интерфейсы в Java (чайнег)
    #39036657
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDSНет есть и xlsx, иначе конечно можно было бы обойтись опенофисом наверно
я тебя не понял, т.к. у MS двоичный закрытый формат.
Что ты с ним собрался делать?
А если один опенофис, то и задача твоя выродилась вообще.
Так что покури пока, а потом чётче про задачу.
IMHO
...
Рейтинг: 0 / 0
Интерфейсы в Java (чайнег)
    #39036678
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123я тебя не понял, т.к. у MS двоичный закрытый формат. Что ты с ним собрался делать?
Тоже не понял, а org.apache.poi на что? Или о чем речь? )
Petro123А если один опенофис, то и задача твоя выродилась вообще.
Нет не один опен.
...
Рейтинг: 0 / 0
Интерфейсы в Java (чайнег)
    #39036725
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDSвсе равно же придется где-то смотреть расширение файла и уже в зависимости от этого
Ну а как-же. Как не обобщай классы снаружи, всё равно где то в коде будет if )).
С полиморфизмом _без_интерфейса_ будет так:
if расширение =
{
переменная_базового_класса = new конкретный класс
}
а дальше уже одинаковы код для всего и вся
...
Рейтинг: 0 / 0
Интерфейсы в Java (чайнег)
    #39036729
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну или так:
переменная_базового_класса = фабрикаДайОбъект('*.xls' маркер нужного объекта)
...
Рейтинг: 0 / 0
Интерфейсы в Java (чайнег)
    #39036734
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123 , вот. Теперь понял так и буду делать )
...
Рейтинг: 0 / 0
Интерфейсы в Java (чайнег)
    #39037535
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нахожу, может кто подскажет, какую библиотеку можно юзать для чтения таблиц опенофиса? (*.ods)
...
Рейтинг: 0 / 0
Интерфейсы в Java (чайнег)
    #39038541
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Походу, надо подключать к проекту jar-ники прямо из опенофиса?
Где бы нарыть примеры работы с OO из Java?
...
Рейтинг: 0 / 0
Интерфейсы в Java (чайнег)
    #39038557
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDS,
ну дак тему соответствующую создай.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Интерфейсы в Java (чайнег)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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