Иногда сталкиваюсь с данной проблемой и хочу узнать, как лучше ее решать
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 параметр, как правильно реализовать это
Добавить в интерфейс еще один метод?
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);
}
}
Или изменять существующий?
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 появляется либо лишний метод, либо лишний параметр.
Может есть более элегантный вариант?