본문 바로가기

아키텍처5

5. Singleton Pattern 싱글턴 패턴은 클래스가 단 하나의 인스턴스만 갖도록 하는 디자인 패턴을 의미한다. 그러나 만들 때 주의할 점이 있다. 생성자는 private으로 만들어서 새로운 인스턴스를 생성하지 못하게 만들어야 한다. 최초 생성을 할 때는 getInstance와 같은 하나의 인스턴스를 가져오는 메소드 내에서 생성을 해준다 예를 통해서 확인해보자. 우리는 SystemSpeaker라는 클래스를 싱글턴으로 만들 것이다. public class SystemSpeaker { private static SystemSpeaker instance; private int volume; private SystemSpeaker() { volume = 5; }; public static SystemSpeaker getInstance() {.. 2020. 12. 13.
4. Factory Method Pattern 팩토리 메소드 패턴은 부모(상위) 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며, 자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다. Creator라는 부모클래스로 생성하지만 그 Creator을 구현하는 ConcreteCreator에 따라 생성되는 객체가 바뀌게 되는 것이다. 팩토리 메소드 패턴의 의도 객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스가 내리도록 합니다. 구체적인 예를 통해 보게되면 ItemCreator라는 클래스를 통해 Item을 생성할 것인데 그 Item은 HpPotion과 MpPotion 두가지 종류가 존재한다. 즉, Item 인터페이스를 상속받는 두개의 클래스가 존재하는 것이다. 그리고 각각.. 2020. 12. 13.
3. Template Method Pattern 템플릿 메소드 패턴은 구현하려는 알고리즘이 일정한 프로세스가 존재할 때 사용한다. 그리고 알고리즘이 변경 가능성이 있을 때 사용하기 좋다. 템플릿 메소드 패턴은 일반화해서 만들 수 있다. 1. 알고리즘을 여러 단계로 나눈다. 2. 나눠진 알고리즘의 단계를 추상 메소드로 선언한다. 3. 알고리즘을 수행할 템플릿 메소드로 만든다. 4. 하위 클래스에서 나눠진 메소드를 구현한다. 아키텍처를 보면 더 쉽게 알 수 있다. 코드의 예제를 통해서 실제 어떻게 구현되는 지 알아보자. 접속 기능을 만들건데 접속은 아래 4개의 과정이 포함된다. 보안 과정 (doSecurity) 인증 과정 (authorization) 인가 과정 (authentication) 접속 과정 (connection) 이렇게 프로세스가 있는 경우 템.. 2020. 12. 13.
2. Adapter Pattern 어댑터 패턴은 어떤 클래스의 인터페이스를 사용하고자 하는 다른 인터페이스로 변환한다. 다시 말해서 어댑터는 클라이언트의 인터페이스와 호환되도록 기존 클래스를 새 인터페이스로 래핑한다. 우리가 사용하는 콘센트 변경 어댑터라고 생각하면 된다. client는 Moveable 클래스를 사용하고 싶은데 Moveable 클래스의 getSpeed()는 마일로 속도를 반환해주기 때문에 한국에서는 쓰기 유용하지 않다. 그래서 Movable 클래스를 건드리지 않고 MovableAdapter라는 인터페이스를 이용해서 마일로 되어있는 속도를 Km로 변환해서 사용하는 방법이다. 예를 통해서 확인해보자 기존 Movable이 있다. public interface Movable { float getSpeed(); } 이걸 구현한 B.. 2020. 12. 10.
1. Strategy Pattern 공부를 하다가 조금 더 기본적인 개념을 확실히 하고 가는게 좋을 것 같아서 디자인 패턴을 하나씩 적어보려 합니다. Strategy Pattern은 스트레티지 패턴은 여러 알고리즘을 하나의 추상적인 접근점(인터페이스)으로 만들어 접근 점에서 서로 교환 가능(델리게이트)하도록 하는 패턴이다. 그래서 필요 전략에 맞게 전략을 갈아 끼울 수도 있고 전략을 확장하기에도 용이하다. Strategy Pattern을 알기 위해서는 인터페이스와 델리게이트 개념을 먼저 알아야한다. 인터페이스 (Interface) 인터페이스의 특징은 기능과 선언을 분리하고 기능을 사용하는 통로이다. 1. 기능과 선언을 분리한다. 인터페이스로 기능을 선언해주고 그 인터페이스를 구현하는 구현 클래스를 통해 실제 메소드의 기능을 구현한다. pu.. 2020. 12. 9.