2017-03-10 1 views
0

나는 계속해서이 문제에 직면 해있다. 내 접근 방식이 맞지 않은지 나는 모른다. 내가 일하는 프로젝트의 코드베이스는 오래된 것이 아니며 수십 개의 다른 클래스가 현재 생성자를 사용하기 때문에 빌더 패턴이나 정적 팩터 리로 현재 생성자를 변경할 수 없습니다.최소 효과를 가진 기존 클래스에 생성자 추가하기

현재 생성자라고합니다.

// Constructor used until now 
    public MatchingPortfolioUtil(Integer parameterA, Integer parameterB, 
    Integer parameterC) 
    { 
    this.parameterA = parameterA; 
    this.parameterB = parameterB; 
    this.parameterC = parameterC; 
    } 

다음 생성자를 추가하고 싶습니다.

// The new constructor 
    public MatchingPortfolioUtil(Integer parameterA) 
    { 
    this.parameterA = parameterA; 
    } 

지금까지, 모든 것이 정상적인 것 같습니다하지만 나는 (좋은 디자인 가능한 경우) 원하는 것은 내 새 모듈 용으로 만든 생성자, 그것은 일부 발생할 수 있기 때문에 내 새 모듈을 사용하는 경우에만해야한다는 것입니다 누군가 다른 모듈에서이 생성자가 안전하다고 생각하여 예외를 사용하면 예외가 발생합니다.

+2

프로젝트에서만 사용하려는 경우 기존 클래스의 하위 클래스를 만들고 거기에 생성자를 추가하십시오. – Jens

+0

@Jens 현재 클래스의 하위 클래스를 만드는 경우 super와 함께이 생성자를 다시 사용해야합니다. 나는 깨끗한 해결책이 있다면 기대하고있다. –

+0

왜 생성자 (which)를 다시 사용해야합니까? – Jens

답변

1

클래스가 밀접하게 결합되어 있으며 코드가 1000 줄 이상입니다. 클래스의 단 하나의 메서드가 필요하며이 특별한 메서드에서는 다른 매개 변수가 필요하지 않습니다.

이 사운드는 클래스와 마찬가지로 많은 책임이 있습니다.

필자가 원하는 방법을 별도의 (새로운) 클래스로 옮겨서 분리 할 수 ​​있도록 제안 할 것입니다.

관련 문제