Если цель состоит в том, чтобы никогда не создавать одно и то же House
дважды, поэтому никогда не создавать экземпляры 2 одинаковых по своему адресу и цвету домов, вы можете сохранить их в List
Если дом, который вы ищете, уже есть в списке, вы получите его (и новый экземпляр будет надет), если не сохраните тот, который вы создали, и добавите его в список
class HouseCreator{
private static HouseCreator instance = new HouseCreator();
private List<House> houses;
private HouseCreator(){
houses = new ArrayList<>();
}
public static HouseCreator getInstance(){
return instance;
}
public House createHouse(String address,String color){
House h = new House(address, color);
int indexOf = houses.indexOf(h);
if(indexOf < 0){
houses.add(h);
return h;
}else{
return houses.get(indexOf);
}
}
}
А в House
классе добавить метод equals
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
House house = (House) o;
return Objects.equals(address, house.address) && Objects.equals(color, house.color);
}