반응형 Pattern11 [Design Pattern] 템플릿 메서드 패턴 (Template Method Pattern) **템플릿 메소드 패턴(Template Method Pattern)**은 알고리즘의 골격을 정의합니다. 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며, 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 재정의할 수도 있습니다. 간단하게 말하면 템플릿 메소드 패턴은 알고리즘의 템플릿을 만든다. 템플릿이란 그냥 메소드이다. 일련의 단계로 알고리즘을 정의한 메소드이다. 여러 단계 가운데 하나 이상의 단계가 추상 메소드로 정의되며, 그 추상 메소드는 서브클래스에서 구현된다. 이러면 서브클래스가 일부분의 구현을 처리하게하면서도 알고리즘의 구조는 바꾸지 않아도 된다. package pattern.template.starbucks; public abstract.. 2022. 7. 3. [Design Pattern] 싱글톤 패턴 (Singleton Pattern) **싱클톤 패턴(Singleton Pattern)**은 크래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공한다. 싱글턴 패턴을 실제로 적용할 때는 클래스에서 하나뿐인 인스턴스를 관리핟로고 만들면 된다. 그리고 다른 어떤 클래스에서도 자신의 인스턴스를 추가로 만들지 못하게 해야한다. 인스턴스가 필요하다면 반드시 클래스 자신을 거치도록 한다. 싱글톤 패턴의 장점 메모리 낭비 방지 가능. 인스턴스를 활용함으로 써 속도 감정 다른 클래스간의 데이터 공유가 가능 싱클톤 패턴의 문제점 동시성 문제의 발생 (해결 가능) 테스트가 어려움. 싱글톤 인스턴스는 자원을 공유하기 떄문에 매번 인스턴스 상태를 초기화 해야함 싱글톤이 가지고 있는 역할이 많을 경우 결합도가 높아져 객체 지향 설계와 멀어짐. (OC.. 2022. 7. 3. [Design Pattern] 장식자 패턴, 데코레이터 패턴(Decorator Pattern) OCP(Open-Closed Principle) Class는 확장에는 열려 있어야 하지만 변경에는 닫혀 있어야 한다. 코드에서 확장해야 할 부분을 선택할 때는 세심한 주의를 기울여야 한다. 무조건 OCP를 적용한다면 괜히 쓸데없는 일을 하며 시간을 낭비할 수 있으며, 필요 이상으로 복잡하고 이해하기 힘든 코드를 만들게 되는 부작용이 발생할 수도 있다. 데코레이터 패턴(Decorator Pattern)으로 객체에 추가 요소를 동적으로 더할 수 있다. 데코레이터를 사용하면 서브클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있다. 데코레이터의 슈퍼클래스는 자신이 장식하고 있는 객체의 슈퍼클래스와 같다. 한 객체를 여러 개의 데코레이터로 감쌀 수 있다. 데코레이터는 자신이 감싸고 있는 객체와 같은 슈퍼클.. 2022. 5. 16. [Design Pattern] 옵저버 패턴, 감시자 패턴 (Observer Pattern) 옵저버 패턴은 일련의 객체 사이에서 일대다 관계를 정의한다. 한 객체의 상태가 변경되면 그 객체에 의존하는 모든 객체에 연락이 간다. 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one to many)의존성을 정의한다. 느슨한 결합(Loose Coupling)은 객체들이 상호작용할 수는 있지만 ,서로를 잘 모르는 관계를 의미한다. 느슨한 결합을 활용하면 유연성이 좋아지고 옵저버 패턴은 느슨한 결합을 보여주는 예이다. 주제(subject)는 옵저버(observer)가 특정 인터페이스를 구현한다는 사실만 안다. 옵저버(observer)는 언제든지 새로 추가할 수 있다. 새로운 형식의 옵저버(observer)를 추가할 때도 주제(subject.. 2022. 5. 16. [Design Pattern] 전략패턴(STRATEGY PATTERN) 전략패턴(Strategy Pattern)은 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해준다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다. 동일 계열의 알고리즘군을 정의하고, 각 알고리즘을 캡슐화하며, 이들을 상호교환이 가능하도록 만든다. 알고리즘을 사용하는 클라이언트와 상관없이 독립적으로 알고리즘을 다양하게 변경 할 수 있게한다. 객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화 하는 인터페이스를 정의하여, 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법이다. 전략 패턴은 전략 클래스를 캡슐화 하기 위한 노력을 합니다... 2022. 5. 16. 이전 1 2 다음 반응형