디자인 관점에서 메서드 인수를 제거하고 생성자 인수로 초기화 된 클래스 변수를 사용할 수있는 경우 생성자 인수를 사용하는 것이 더 좋은 경우는 언제입니까?생성자 인수 또는 메소드 인수?
답변
클래스의 오브젝트가 해당 매개 변수없이 완전히 초기화 된 것으로 간주 될 수없는 경우 생성자 인수를 사용하십시오. 예 : Employee 클래스를 만들고 Employee의 각 인스턴스가 이름을 가져야한다면 생성자에서 name을 매개 변수로 사용해야합니다. 또 다른 예는 열려는 파일의 이름을 지정하지 않고
File
클래스를 만들 수 없다는 것입니다.메서드의 컨텍스트에서만 관련이있는 매개 변수는 메서드 매개 변수로 전달되어야합니다. 예를 들어,
List
클래스에 새 항목을 추가 할 수 있습니다. 이것은 내부적으로 Object의 상태를 업데이트 할 수 있지만이 클래스의 작동 방식입니다. 즉, 목록을 유지하기위한 내부 데이터 구조가 있으며 메서드는 해당 상태를 조작하기위한 것입니다.때로는 기본 프레임 워크에서 setter 메서드를 사용하여 상태를 초기화해야 할 수도 있습니다. 이는 Hibernate와 같은 ORM을 사용하거나 MVC 프레임 워크 (예 : Spring MVC)에서 웹 폼의 Model 객체와 같은 POJO Beans를 사용할 때 일반적으로 사용됩니다. 이러한 경우 클래스는 일반적으로 값 객체를 나타내며, 생성자에서 매개 변수를 프레임 워크로 전달하지 않는 일반적인 방법은 기본 no-arg 구성자를 사용하여 객체를 인스턴스화합니다.
종속성 주입 프레임 워크를 사용할 때 Constructor를 사용하거나 setter 메소드를 사용하여 종속성을 주입 할 수 있습니다. 그러한 경우에는 필수 종속성에 대해 Constructor params를 사용하고 옵션 종속성에 setter를 사용해야합니다 (필수 사항은 아니지만). 당신은 그것을 지침으로 생각할 수 있습니다.
- 1. 인수 생성자 대 메소드 전달
- 2. 액세스 생성자 이름과 인수
- 3. 생성자 인수 런타임 변경
- 4. Ninject - 세션의 생성자 인수
- 5. 자동으로 생성자 인수 저장
- 6. 메소드 부모 클래스 생성자 (Flask - ModelView.as_view())에 메소드 인수 전달
- 7. Ninject에 생성자 인수
- 8. 생성자 인수 오류
- 9. OOP Object 생성자 인수
- 10. JavaScript 생성자 인수
- 11. 한 생성자 - 여러 인수
- 12. 암시 적 생성자 인수
- 13. 인수 생성자 호출 호출
- 14. 생성자 인수 해결
- 15. 다른 유형의 메소드 인수
- 16. _.chain()의 메소드 인수
- 17. Integer.toString (인수) 또는 toString (인수)
- 18. 해시 메소드 인수 값
- 19. 루비 메소드 인수
- 20. 메소드 Java 인수
- 21. Java 메소드 인수 퍼즐
- 22. 일반 테스트 메소드 인수
- 23. 여러 메소드 인수
- 24. std :: threads 생성자 인수 오류
- 25. 파이썬 자식 클래스 생성자 인수
- 26. 생성자 인수 인터페이스를 통한 전달
- 27. Ninject 동적 다중 생성자 인수
- 28. 생성자 인수 문제 ActionScript 3
- 29. PHP 클래스 메소드 인수 선언은
- 30. 인수 시작 메소드 추가 JavaFX
이러한 질문을하는 구체적인 예를 보여주십시오. 생성자 인수를 사용하여 객체의 상태를 초기화합니다. 메소드 인수를 사용하여 객체의 특정 메소드에 입력을 전달하십시오. –
이것은 일반적인 디자인 질문입니다. 그것은 다소 모호하다. 그러나 적절한 수준의 세부 사항을 제공했다. 좋은 답변을 제공하기 위해 코드를 작성하지 않아도됩니다. 디자인은 코드를 작성하기 전에 발생합니다. – programm3r
우리는 (글쎄, 나는) 당신이 묻고있는 것을 알아내는 구체적인 예를 필요로한다. 단지 설명을하는 것의 문제점은 언어 장벽과 여러분과 같은 파장에 있지 않은 사람들을 포함합니다. 둘 다 [so]와 매우 관련이 있습니다. – Dukeling