2014-05-23 69 views
1

저는 소프트웨어 설계의 초보자입니다. 클래스 (DTO) 사용자에는 액세서리 메소드가있는 20 개의 속성이 포함되어 있습니다. 이 개체는 DB 테이블로 업데이트해야합니다. setter 메서드를 사용하여 User 객체에 데이터를 설정해야합니다.데이터를 클래스 속성으로 설정

이렇게하려면 20 개의 setter 메서드를 호출해야합니까, 아니면 표준 대체 방법이 있습니까? 클래스 (DTO)에 더 많은 특성이 포함될 수 있습니까?

가 여기에 귀하의 직접적인 질문에 Responsing 내 수업

enter image description here

답변

0

이다, 대답은 - 표준 방법이 없습니다. 모든 옵션은 열려 있고, Att마다 getter/setter가 있으며, private 데이터 멤버로 노출하고 직접 액세스 할 수 있으며, 액세스를 더 많은 채널로 연결하는 인터페이스를 만들 수 있습니다. 모든 것은 시스템 및 디자인의 다른 측면에 따라 다릅니다.

DTO에는 원하는 속성을 여러 개 포함 할 수 있습니다. 이것이 괜찮 으면 다른 질문입니다.

구체적인 예를 보지 않고도이 DTO가 여러 작은 것들에서 손상 될 수 있다고 생각합니다.

더 자세히 분석하십시오. 상속을 사용하여 해체 할 수 있습니까? 그 (것)들은 구성 구조를 사용하고 있습니까? 그리고 마침내 어쩌면 평범한 협회 일 수도 있습니다.

더 작고 현명하게 관련 요소를 갖는 것이 좋습니다. 하나의 큰 blob 객체를 갖는 것이 좋습니다. 전체 OO 패러다임은 모두 더 나은 수업 설계에 관한 것입니다.

DTO (이름 및 atts)의 세부 정보를 게시하면 리팩터링에 대한 아이디어를 얻을 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. DTO 클래스가 있습니다. 내 업데이트 된 질문을 참조하십시오. – satyanarayana

0

세터 사용은 매우 일반적입니다. 또 다른 방법은 하나의 호출로 객체를 초기화하는 생성자를 선언하는 것입니다.하지만 20 개의 인수는 너무 많은 것처럼 보입니다. User 객체가 초기화되는 방식에 따라 Builder pattern이 유용 할 수 있습니다. 또한 테이블을 살펴보고 normalization을 사용하여 더 이상 분해 할 수 있는지 확인해야합니다. 이렇게하면 더 작은 테이블을 만들 수 있습니다. 그래도 개체의 많은 양의 필드를 초기화하지 않으면 fluent interface을 사용하여 코드를 줄이는 것이 좋습니다.

관련 문제