У меня есть открытый конструктор, который принимает параметр (int age) для создания объекта. Я хочу проверить, является ли переданный параметр законным или нет, например, возраст не может быть отрицательным. Если это незаконно, то не создавайте объект/экземпляр. Если это законно, не проблема.
Я могу только думать об одном способе сделать это -
Сделать конструктор закрытым. Создайте статический метод с параметром (int age), чтобы выполнить все проверки и вернуть null, если вы передадите ему незаконное значение. Если вы передадите ему юридическое значение, создайте объект и верните его ссылку. Есть ли другой способ сделать это? Может быть, внутри самого конструктора?
РЕДАКТИРОВАТЬ: Я думал об одной проблеме с указанным выше методом. Метод создателя метода/объекта factory может быть только статическим методом по очевидным причинам. Что произойдет, если метод factory должен получить доступ к переменной-члену (чтобы выполнить некоторую проверку) для создания объекта? Затем мы будем вынуждены сделать эту переменную-членом статической. Во всех случаях это может быть не совсем нормально.
Имеет ли смысл?