본문 바로가기

ComputerScience/SoftwareEngineering3

[SoftwareEngineering] 3. 디자인 패턴 - 행위 3. 행위(Beavioral) 패턴 1) 전략 패턴 같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화 되어 있고 이들이 필요할 때 교체할 수 있도록 함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있게 하는 패턴이다. 이 것만 읽으면 너무 추상적인 말이라 이해가 잘 안갈 수 있다. 코드를 보고 이해한 후 이 말이 무슨 뜻인지 아래에서 다시한번 다뤄보겠다. 예제 코드를 보기전에 구성을 먼저 보고 가자 실선은 interface 사용되는 클래스를 표시한 것이다. 즉, 여기서는 Robot이 Strategy들을 가지고 있으며 어떤 Strategy의 구현체를 사용하는지에 따라 전략을 바꾸는 것이다. 또한, 어떤 로봇인지에 따라 어떤 전략을 쓸지 setter로 지정해 주는 코드를 작성할 것이다. 로봇( 전략.. 2021. 6. 6.
[SoftwareEngineering] 2. 디자인 패턴 - 구조 2. 구조(Structural) 패턴 1) 어댑터 패턴 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 즉, 호환성 문제를 해결하기 인터페이스를 사용하여 같이 쓸 수 없는 클래스들을 연결해서 사용하는 것이다. Dog(interface) - Poodle(class) public interface Dog{ public void walk(); public void bark(); } public class Pooddle implements Dog{ @Override public void bark() { System.out.println("멍멍멍"); } @Override pub.. 2021. 6. 5.
[SoftwareEngineering] 1. 디자인 패턴 - 생성 ※ 디자인 패턴 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 재 발생 했을 때 재사용 할 수 있는 해결책 "Don't reinvent the Wheel(바퀴를 다시 발명하지 마라) - 이미 만들어져 잘 되는 것을 처음부터 다시 만들 필요가 없다. - GOF(Gang Of Four)의 디자인 패턴 GOF 디자인 패턴은 위와 같이 23개가 있다. 이 포스트에서는 자주 쓰이는 일부의 패턴들만을 살펴 보겠다. 1. 생성(Creational) 패턴 1) 싱글턴 패턴 어떤 클래스가 유일하게 1개만 존재해야할 때 사용한다. 스프링에서 Bean을 만들 때 기본설정이 싱글톤이다. @Scope를 사용하여 변경할 수 있다. - 방법 class Singletone{ static private Sing.. 2021. 6. 5.