31일 재구성 9: 커넥터 추출(Extract Interface)
2980 단어 이음매재구성인출레저Refactoring
먼저 재구성 전의 코드를 봐라.
class ClassRegistration {
public void createCode() {
// create registration code
}
public void transfer() {
// class transfer code
}
public double getTotal() {
return 0.01;
}
}
class RegistrationProcessor {
public double processRegistration(ClassRegistration registration) {
registration.createCode();
return registration.getTotal();
}
}
상기 예에서 만약에 여러 개의 서로 다른 Registration Processor 클래스가 있으면 자율적으로 서로 다른 등록 방식을 선택해야 한다. 즉, 등록ClassRegistration 클래스 역시 여러 가지 다른 실현 방법이 있다는 것이다.그러나 위의 코드에서 RegistrationProcessor 클래스는 단독의ClassRegistration 클래스와 밀접하게 결합되어 다른 구체적인 실현과 선택적으로 연결될 수 없다.
이러한 부족함을 해결하기 위해 ClassRegistration 클래스의create () 방법을 추출하여 새로운 인터페이스 (인터페이스) 에 넣고 재구성된 코드를 먼저 봅니다.
interface IRegistration {
public void createCode();
public double getTotal();
}
class ClassRegistration implements IRegistration {
@Override
public void createCode() {
// create registration code
}
public void transfer() {
// class transfer code
}
@Override
public double getTotal() {
return 0.01;
}
}
class RegistrationProcessor {
public double processRegistration(IRegistration registration) {
registration.createCode();
return registration.getTotal();
}
}
재구성 후,ClassRegistration 클래스는 Iregistration 인터페이스를 실현했고, 이 인터페이스에 명시된 모든 방법을 실현했으며,ClassRegistration 클래스에서 @Override로 표시했다.가장 중요한 것은 RegistrationProcessor 클래스(즉 고객 클래스)가 자신의 프로세스 Registration () 방법에서 그 매개 변수 유형은 더 이상 구체적인 ClassRegistration 클래스가 아니라 Iregistration 인터페이스이다.이렇게 하면 Iregistration 인터페이스를 실현한 여러 개의 실현 클래스를 제공한 다음에 프로세스 Registration () 방법에 구체적으로 전송된 매개 변수로 실행할 때 도대체 어떤 실현인지 확인할 수 있습니다.
실제로 이것은 우리가 흔히 말하는'인터페이스 프로그래밍', 즉 다태적 메커니즘을 운용하는 장점이다.사용자 클래스는 구체적인 실현 클래스와 직접적으로 의존하지 않고 추상적인 인터페이스에 의존하는 데 중점을 두었다.
텍스트 링크:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/07/refactoring-day-9-extract-interface.aspx
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
의아하게도 아버지 대상의 인터페이스도 대상에게 물려받는다앞에서 우리가 이미 보았듯이 인터페이스는 능력이고 증서이며 인터페이스가 없는 대상은 좋은 대상이 아니다. 그러면 어떤 대상들은 어떤 인터페이스도 실현하지 못했지만 그들은 여전히 좋은 대상이다. 왜?그들은 아버지의 대...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.