У меня есть класс, у которого есть собственный метод equals ().Когда я сравниваю два объекта с использованием этого метода равенства, меня интересует не только то, равны они или нет, но и то, что они не равны, что в них отличалось.Наконец, я хочу иметь возможность извлечь различия, возникающие из-за неравной ситуации.
В настоящее время я использую ведение журнала, чтобы показать, где мои объекты неравны.Это работает, но у меня есть новое требование - иметь возможность извлекать фактические результаты проверки на равенство для отображения позже.Я подозреваю, что для обработки ситуаций такого типа существует объектно-ориентированный шаблон проектирования.
public class MyClass {
int x;
public boolean equals(Object obj) {
// make sure obj is instance of MyClass
MyClass that = (MyClass)obj;
if(this.x != that.x) {
// issue that I would like to store and reference later, after I call equals
System.out.println("this.x = " + this.x);
System.out.println("that.x = " + that.x);
return false;
} else {
// assume equality
return true
}
}
}
Существуют ли хорошие предложения шаблона проектирования, где выполняется какая-то работа, но вторичный объект собирает информацию о том, какхорошо, что была проделана работа, которую позже можно извлечь и отобразить?