...as the arguments of the House constructor increase it would be difficult to manage it using constructor.
Use the Builder pattern (Effective Java item 2):
public class House {
//these are immutable if you wish
private final int mNumberOfWindows;
private final int mNumberOfDoors;
private House(HouseBuilder builder) {
mNumberOfWindows = builder.mNumberOfWindows;
mNumberOfDoors = builder.mNumberOfDoors;
}
public static class HouseBuilder {
private int mNumberOfWindows; //set defaults here, make final and pass in builder constructor if they must be set
private int mNumberOfDoors;
public HouseBuilder windows(int numberOfWindows) {
mNumberOfWindows = numberOfWindows;
return this;
}
public HouseBuilder doors(int numberODoors) {
mNumberOfDoors = numberODoors;
return this;
}
public House build() {
return new House(this);
}
}
public int getNumberOfWindows() {
return mNumberOfWindows;
}
public int getNumberOfDoors() {
return mNumberOfDoors;
}
}
Usage:
House.HouseBuilder hb = new House.HouseBuilder();
hb.doors(4);
hb.windows(3);
House h = hb.build();
House h2 = new House.HouseBuilder().doors(4)
.windows(3).build();