2013-04-11 1 views
0

내 프로젝트의 디자인 관련 딜레마에 직면했습니다. & 몇 가지 제안을받을 수 있다면 정말 고맙겠습니다. 약 20-25 개의 필드가있는 POJO가 있습니다. & 경우에 따라이 객체는 필요에 따라 부분적으로 인스턴스화됩니다. 제 견해로 이것은 좋은 연습이 아닙니다. &은 상속이나 구성을 사용하여 피해야합니다. 부분적인 인스턴스화를 피하기 위해 객체 생성 논리 (아마도 디자인 패턴)를 구현하는 가장 좋은 방법에 대한 제안을 찾고 있습니다. 현재 오브젝트는 빌더 패턴을 사용하여 작성 중입니다.
부분 객체 인스턴스화 피하기

기본적으로 스윙 응용 프로그램입니다. 데이터는 확인을 위해 표시 될 다음 창으로 전달되는 JDialog &의 다른 필드 (20-25)에서 가져옵니다. 이 데이터는 POJO를 사용하여 전달됩니다. 이 POJO는 현재 빌더 패턴을 사용하여 인스턴스화됩니다. 하지만 POJO가 부분적으로 인스턴스화되지 않은 곳을 구현할 방법을 찾고 있는데 &은 소수의 필드 만 전달해야하는 경우에 사용됩니다.

미리 감사드립니다.

+0

예를 들어 알려 주시면 도움이됩니다. –

답변

1

일부 조건에서만 사용되며 다른 조건에서는 필요하지 않은 매개 변수가있는 클래스가있는 경우 반드시 리팩터링을 수행해야합니다. 예를 들어, Extract Class 리팩터링을 사용해 일부 매개 변수와 메소드를 그룹화하십시오. 일부 매개 변수에서 필요가 있음을 나타내는 유형 코드가 있으면 객체의 수명 동안 유형 코드가 변경되지 않는 경우 replacing typecode with subclasses 을 생각하거나 그렇지 않으면 ypecode with state/strategy을 대체하십시오. 그런 다음 필드와 메소드를 원래 클래스에서 새로 생성 된 클래스로 이동하십시오.

Martin Fowler의 Refactoring 서적을 읽어 보시기 바랍니다. 그것은 단지 대단하고 매우 도움이됩니다.

빌더 패턴은 괜찮지 만 오브젝트 작성을위한 팩토리 메소드 패턴을 구현할 수 있습니다.

+0

Andrei에게 감사드립니다. 그것들은 매우 유용한 링크였습니다. 개체에 20-25 명의 멤버가있는 경우 팩토리 메서드 패턴 구현이 부분 개체 생성을 방해하는 방법에 대한 예도 제공 할 수 있습니까? – mindreader

+1

@mindReader, 팩토리 메서드를 사용할 때 개체 생성에 대한 제한된 옵션 집합을 기본 클래스에 제공합니다. 예를 들어 개체에 필드 여야하는 속성과 일부 조건에서만 적용되는 여러 속성 집합이있는 경우 각 조건에 대해 하나의 팩터 리 메서드를 구현하여 개체가 유효한 상태로 만들어 지도록 할 수 있습니다. 그러나 팩토리 메서드를 사용하는보다 효과적인 방법은 부모 클래스의 일부 하위 클래스를 생성하는 것입니다 (미리 리팩토링을 수행하고 큰 개체를 계층 구조로 분할하는 경우). 희망이 도움이 :) –