본문 바로가기
반응형

패턴10

[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.
반응형