Filtering Data: Interfaces To Avoid Duplication
Filtering Data: Interfaces To Avoid Duplication
• Filter is an interface
Interface: Type That Promises Method(s)
public interface Filter {
public boolean satisfies(QuakeEntry qe);
• Filter is an interface
Interface: Type That Promises Method(s)
public interface Filter {
public boolean satisfies(QuakeEntry qe);
• Filter is an interface
• Type which promises certain methods
Interface: Type That Promises Method(s)
public interface Filter {
public boolean satisfies(QuakeEntry qe);
• Filter is an interface
• Type which promises certain methods
• Classes can implement an interface
• Must define the promised methods
• Can be treated as the interface type
Classes Can Implement Interfaces
public class MinMagFilter implements Filter {
private double magMin;
public MinMagFilter(double min) {
magMin = min;
}
public boolean satisfies(QuakeEntry qe) {
return qe.getMagnitude() >= magMin;
}
}
Classes Can Implement Interfaces
public class MinMagFilter implements Filter {
private double magMin;
public MinMagFilter(double min) {
magMin = min;
}
public boolean satisfies(QuakeEntry qe) {
return qe.getMagnitude() >= magMin;
}
}
Classes Can Implement Interfaces
public class MinMagFilter implements Filter {
private double magMin;
public MinMagFilter(double min) {
magMin = min;
}
public boolean satisfies(QuakeEntry qe) {
return qe.getMagnitude() >= magMin;
}
}
Classes Can Implement Interfaces
public class MinMagFilter implements Filter {
private double magMin;
public MinMagFilter(double min) {
magMin = min;
}
public boolean satisfies(QuakeEntry qe) {
return qe.getMagnitude() >= magMin;
}
}
Compatible Types
public ArrayList<QuakeEntry>
filter(ArrayList<QuakeEntry> quakeData,
Filter f) {
ArrayList<QuakeEntry> answer = new ArrayList<QuakeEntry>();
for(QuakeEntry qe : quakeData) {
if (f.satisfies(qe)) {
answer.add(qe);
}
}
return answer;
}