티스토리 뷰
어떤 하나의 기능을 구성하는 특정 부분을 실행중에 다른것으로 효과적으로 변경할 수 있는 방안을 제공한다.
SumPrinter 클래스의 print 메서드 매개변수를 SumStrategy interface로 넣어 원하는 class를 구현해 변경할 수 있다.
[참고자료] : https://victorydntmd.tistory.com/292
- SumPrinter.java
public class SumPrinter {
void print(SumStrategy strategy, int N){
System.out.printf("The Sum of 1 - %d : ", N);
System.out.println(strategy.get(N));
}
}
- SumStrategy.java
public interface SumStrategy {
int get(int N);
}
- SimpleSumStrategy.java
public class SimpleSumStrategy implements SumStrategy {
@Override
public int get(int N) {
int sum = N;
for(long i=1; i<N; i++){
sum += i;
}
return sum;
}
}
- GaussSumStrategy.java
public class GaussSumStrategy implements SumStrategy{
@Override
public int get(int N) {
return (N+1)*N/2;
}
}
- MainEntry.java
public class MainEntry {
public static void main(String[] args) {
SumPrinter cal = new SumPrinter();
cal.print(new SimpleSumStrategy(), 10);
cal.print(new GaussSumStrategy(), 10);
}
}
'StudyingRecords > Design Pattern' 카테고리의 다른 글
[DesignPattern / Iterator패턴] (0) | 2022.02.28 |
---|---|
싱글톤 패턴(Singleton pattern) (0) | 2022.01.05 |
어댑터 패턴(Adapter Pattern) (0) | 2021.12.29 |