Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Различные реализации интерфейса / 6 сообщений из 6, страница 1 из 1
01.06.2017, 09:09
    #39463527
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные реализации интерфейса
Иногда сталкиваюсь с данной проблемой и хочу узнать, как лучше ее решать

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public interface ICommon {
	Client readClient(String firstName, String lastName);
}

public class OracleDao implements ICommon {
	@Override
	public Client readClient(String firstName, String lastName) {
	}
}

public class MySQLDao implements ICommon {
	@Override
	public Client readClient(String firstName, String lastName) {
	}
}

public class PGDao implements ICommon {
	@Override
	public Client readClient(String firstName, String lastName) {
	}
}



Так получилось, что например для начитки данных из Oracle понадобился еще 3 параметр, как правильно реализовать это
Добавить в интерфейс еще один метод?

Код: sql
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.
32.
33.
34.
public interface ICommon {
	Client readClient(String firstName, String lastName);
	Client readClient(String firstName, String lastName, String middleName);
}

public class OracleDao implements ICommon {
	@Override
	public Client readClient(String firstName, String lastName) {
	}
	@Override
	public Client readClient(String firstName, String lastName, String middleName) {
	}
}


public class MySQLDao implements ICommon {
	@Override
	public Client readClient(String firstName, String lastName) {
	}
	@Override
	public Client readClient(String firstName, String lastName, String middleName) {
		retrun readClient(firstName, lastName);
	}
}

public class PGDao implements ICommon {
	@Override
	public Client readClient(String firstName, String lastName) {
	}
	@Override
	public Client readClient(String firstName, String lastName, String middleName) {
		retrun readClient(firstName, lastName);
	}
}



Или изменять существующий?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public interface ICommon {
	Client readClient(String firstName, String lastName, String middleName);
}

public class OracleDao implements ICommon {
	@Override
	public Client readClient(String firstName, String lastName, String middleName) {
	}
}


public class MySQLDao implements ICommon {
	@Override
	public Client readClient(String firstName, String lastName, String middleName) {
	}
}

public class PGDao implements ICommon {
	@Override
	public Client readClient(String firstName, String lastName, String middleName) {
	}
}



То есть и тот и то я не считаю идеальным, для MySQLDao и PGDao появляется либо лишний метод, либо лишний параметр.
Может есть более элегантный вариант?
...
Рейтинг: 0 / 0
02.06.2017, 09:10
    #39464268
ermak.nn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные реализации интерфейса
А через абстрактный класс не лучше будет?
с методом
Код: java
1.
2.
3.
public Client readClient(String firstName, String lastName, String middleName) {
    return readClient(firstName, lastName);
}
...
Рейтинг: 0 / 0
05.06.2017, 11:05
    #39465759
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные реализации интерфейса
-=Koba=-,

Есть такая концепция -- версии интерфейсов... Если что, смотреть в COM/OLE.
...
Рейтинг: 0 / 0
07.06.2017, 20:57
    #39468186
-=Koba=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные реализации интерфейса
MasterZiv-=Koba=-,

Есть такая концепция -- версии интерфейсов... Если что, смотреть в COM/OLE.
А можно более подробнее, в каком направлении гуглить...(
...
Рейтинг: 0 / 0
27.06.2017, 18:21
    #39478647
For All
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные реализации интерфейса
-=Koba=-Так получилось, что например для начитки данных из Oracle понадобился еще 3 параметр, как правильно реализовать это
Добавить в интерфейс еще один метод?
Получается что либо для Oracle нужен свой отдельный интерфейс,
либо этот третий параметр - это поле класса который имплементит нужный интерфейс (но не аргумент в методе)
...
Рейтинг: 0 / 0
28.06.2017, 10:50
    #39478864
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Различные реализации интерфейса
Вдарим паттернами по бездорожью. Parameter Object .
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Различные реализации интерфейса / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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