디자인 패턴을 연구하지는 않았지만 할 일이 하나 있다고 생각합니다. 몇 가지 나무를 통해 다른 알고리즘 세트를 실행 중입니다. 갑자기 나는 이제 위의 각 알고리즘을 하나의 두 가지 버전이 필요하고, 두 번째는 전처리 최초의 나무가 변형입니다, 그러나디자인 패턴을 찾고
public interface DistanceMetric {
public double distance(AbstractTree<String> t1, AbstractTree<String> t2);
}
public class concreteDistanceAlgorithmV1 implements DistanceMetric{
public double distance(AbstractTree<String> t1, AbstractTree<String> t2){
// algorithm methods
return distance;
}
}
:
이public interface DistanceMetricType2 {
public double distance(AbstractTree<String> t);
}
public class concreteDistanceAlgorithmV2 implements DistanceMetricType2{
private Object transformation1;
public concreteDistanceAlgorithmV2(AbstractTree<String> t1){
transformation1 = process(t1);
}
public double distance(AbstractTree<String> t2){
Object transformation2 = process(t2);
//algorithm involving both transformations
return distance;
}
}
이 있어야합니다을 그들은 모두 인터페이스를 구현 모든 알고리즘에 대해 두 클래스를 만드는 것보다 나은 방법은 무엇입니까? 이것은 전략 패턴 또는 이와 유사한 용도로 사용됩니까? 어떻게하면 좋은 디자인 원칙을 더 잘 활용할 수 있을까요?
사이드 노트 : 메소드는 추상 클래스 (AbstractTree) 대신 인터페이스를 사용해야합니다. –
반드시 필요한 것은 아니지만, 좋은 생각 일 수 있습니다. 그의 모든 나무가 AbstractTree에서 물려 받으면 효과가있을 수 있습니다. –