티스토리 뷰

어떤 하나의 기능을 구성하는 특정 부분을 실행중에 다른것으로 효과적으로 변경할 수 있는 방안을 제공한다.
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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함