Na prostym przykładzie:
jest meetoda:
// ************* I *******************
@Override
public List<T> scrape(String text) {
text = text.toLowerCasse();
text = text.replaceAll("(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", "");
text = text.replaceAll("<a href=.*</a>", "");
text = text.replace("cwiartka", "0.25");
return this.getHander.handle(text).stream()
.flatMap(x -> finder.find("jakistampattern").stream())
.map(this.converter.apply)
.filter(this.isValid)
.collect(Collectors.toList());
}
wujek Bob: a single responsibility?
.
Julian: ok, już robię
...
//************* II *******************
@Override
public List<T> scrapeFrom(String text) {
text = this.clean(text);
return this.getHander.handle(text).stream()
.flatMap(x -> finder.find("jakistampattern").stream())
.map(this.converter.apply)
.filter(this.isValid)
.collect(Collectors.toList());
}
private String clean(String text) {
return text.toLowerCase()
.replaceAll("(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", "");
.replaceAll("<a href=.*</a>", "");
.replace("cwiartka", "0.25");
}
wujek Bob: single responsibility, synek
Julian: ok, ok...
//************* III *******************
public interface Cleaner extends UnaryOperator<String> {
}
public class CleanerDefault implements Cleaner {
@Override
public String apply(String text) {
return text.toLowerCasse()
.replaceAll("(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", "");
.replaceAll("<a href=.*</a>", "");
.replace("cwiartka", "0.25");
}
}
@Override
public List<T> scrapeFrom(String text) {
text = this.cleaner.apply(text);
return this.getHander.handle(text).stream()
.flatMap(x -> finder.find("jakistampattern").stream())
.map(this.converter.apply)
.filter(this.isValid)
.collect(Collectors.toList());
}
wujek Bob: single responsibility, powiedziałem!
//************* IV *******************
public interface Cleaner extends UnaryOperator<String> {
}
public class CleanerDefault implements Cleaner {
@Override
public String apply(String text) {
text = text.toLowerCasse();
text = this.cleanFromHttps(text);
text = this.cleanFromHrefs(text);
text = this.cleanFromCwiartka(text);
return text;
}
private String cleanFromHttps(String text) {
return text.replaceAll("(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", "");
}
private String cleanFromHrefs(String text) {
return text.replaceAll("<a href=.*</a>", "");
}
private String cleanFromCwiartka(String text) {
return text.replace("cwiartka", "0.25");
}
}
@Override
public List<T> scrapeFrom(String text) {
text = this.cleaner.apply(text); // wstrzykniéty CleanerDefault
return this.getHander.handle(text).stream()
.flatMap(x -> finder.find("jakistampattern").stream())
.map(this.converter.apply)
.filter(this.isValid)
.collect(Collectors.toList());
}
wujek Bob: `nosz kurtka maćka, z Krakowa jesteś? SINGLE RESPONSIBILITY!
//************* V *******************
public interface Cleaner extends UnaryOperator<String> {
}
public class CleanerDefault implements Cleaner {
private String text;
@Override
public String apply(String text) {
this.text = text;
return this.text.toLowerCase().cleanFromHttps().cleanFromHrefs().cleanFromCwiartka();
}
private CleanerDefault cleanFromHttps() {
this.text = this.text.replaceAll("(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", "");
return this;
}
private CleanerDefault cleanFromHrefs() {
this.text = this.text.replaceAll("<a href=.*</a>", "");
return this;
}
private CleanerDefault cleanFromCwiartka() {
this.text = this.text.replace("cwiartka", "0.25");
return this;
}
}
@Override
public List<T> scrapeFrom(String text) {
text = this.cleaner.apply(text); // wstrzykniéty CleanerDefault
return this.getHander.handle(text).stream()
.flatMap(x -> finder.find("jakistampattern").stream())
.map(this.converter.apply)
.filter(this.isValid)
.collect(Collectors.toList());
}
wujek Bob: nosz, kurrrrtka, S I N G L E R E S P O N S I B I L I T Y K U R T K A J E G O MAĆka!!!
//************* VI *******************
public interface Cleaner {
Cleaner clean();
String getText();
}
public class CleanerDefault implements Cleaner {
private String text;
public CleanerDefault(String text) {
this.text = text;
}
@Override
public String getText() {
return text;
}
@Override
public Cleaner clean() {
thix.text = this.text.toLowerCase().cleanFromHttps().cleanFromHrefs().cleanFromCwiartka();
return this;
}
private Cleaner cleanFromHttps() {
this.text = this.text.replaceAll("(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]", "");
return this;
}
private Cleaner cleanFromHrefs() {
this.text = this.text.replaceAll("<a href=.*</a>", "");
return this;
}
private Cleaner cleanFromCwiartka() {
this.text = this.text.replace("cwiartka", "0.25");
return this;
}
}
@Override
public List<T> scrapeFrom(String text) {
cleaner = this.cleanerclass.getConstructor(String.class).newInstance(text);
text = cleaner.clean().getText();
return this.getHander.handle(text).stream()
.flatMap(x -> finder.find("jakistampattern").stream())
.map(this.converter.apply)
.filter(this.isValid)
.collect(Collectors.toList());
}
...