본문 바로가기
반응형

Design Pattern11

디자인 패턴 - Factory Pattern Factory Pattern (조금 더 구체적인 용어로는 Factory Method Pattern) ㆍ팩토리 패턴은 생성 패턴(Creational Pattern) 중 하나. 생성 패턴은 인스턴스를 만드는 절차를 추상화하는 패턴. 생성 패턴에 속하는 패턴들은 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리해줌. 생성 패턴은 시스템이 상속(inheritance)보다 복합(composite) 방법을 사용하는 방향으로 진화되어 가면서 더 중요해지고 있음. 생성 패턴에서는 중요한 두가지 이슈가 있음. 1. 생성 패턴은 시스템이 어떤 Concrete Class를 사용하는지에 대한 정보를 캡슐화 함. 2. 생성 패턴은 이들 클래스의 인스턴스들이 어떻게 만들고 어떻게 결합하는지에 대한 부분을 완전히 .. 2022. 6. 25.
디자인 패턴 - Compound Pattern Compound Pattern이란? 컴파운드 패턴은 이름 그대로 여러 디자인 패턴이 혼합된 디자인 패턴을 말함. 일련의 패턴을 함께 사용하여 다양한 디자인 문제를 해결함. 반복적으로 생길수 있는 일반적인 문제를 해결하기 위한 용도로 사용됨. 패턴으로 이루어진 패턴. / 하지만 단순히 여러 패턴이 사용되었다고 해서 컴파운드 패턴인 것은 아님. 앞서 말했듯 여러 패턴이 사용되는 동시에 일반적인 문제를 해결하는데 반복적으로 사용될 수 있어야 함. Compound Pattern의 대표적인 예시는 그 유명한 MVC Pattern. MVC Pattern이란? MVC(Model-View-Controller) Pattern은 하나의 application, project를 구성할 때, 그 구성요소를 역할에 따라 모델-뷰.. 2022. 6. 1.
디자인 패턴 - Singleton Pattern Singleton Pattern : Program이 시작될 때 어떤 클래스가 최초 한번만 메모리를 static하게 할당하고 그 메모리에 instance를 만들어 사용하는 패턴. / 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는 이전에 생성했던 객체를 반환함. -> 자바에서는 생성자를 private으로 선언해서 생성 불가하게 하고 getInstance()로 받아서 쓰기도 함. / registry 같은 설정 파일의 경우 객체가 여러개 생성되면 설정 값이 변경될 위험이 생길 수 있다. Instance가 하나만 생성되는 특징을 가진 싱글턴 패턴을 이용하면, 하나의 instance를 메모리에 등록해서 여러 thread가 동시에 해당 instance를 공유하여 사용.. 2022. 5. 22.
디자인 패턴 - Proxy Pattern 프록시 패턴 : 프록시 객체를 통해 기본 객체에 접근하는 패턴. / Proxy는 번역하면 대리자, 대변인의 의미를 갖는다. 즉 프록시는 어떤 역할을 대신 수행하는 존재임. / (비서같은 존재 -> 사장한테 질문을 바로 하기보다는 비서한테 먼저 물어보는 개념) / 이렇게 어떤 객체를 사용하고자 할 때, 객체를 직접적으로 참조하는 것이 아니라, 해당 객체를 대행(proxy)하는 객체를 통해 대상 객체에 접근하는 방식을 사용하면 해당 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있고 또한 실제 객체의 기능이 반드시 필요한 시점까지 객체의 생성을 미룰 수 있음. 예를 들어, 용량이 큰 이미지와 글이 같이 있는 문서를 모니터 화면에 띄울 때 이미지 파일은 용량이 크고 텍스트는 용량이 작아.. 2022. 5. 17.
디자인 패턴 - State Pattern State Pattern : 스테이트 패턴은 객체가 특정 상태에 따라 행위를 달리하는 상황에서, 자신이 직접 상태를 체크하여 상태에 따라 행위를 호출하지 않고, 상태를 객체화하여 상태가 행동을 할 수 있도록 위임하는 패턴. / 객체의 특정 상태를 클래스로 선언하고, 클래스에서는 해당 상태에서 할 수 있는 행위들을 메서드로 정의함. / 이러한 각 상태 클래스들을 인터페이스로 캡슐화하여, 클라이언트에서 인터페이스를 호출하는 방식. / 객체의 내부 상태에 따라 스스로 행동을 변경할 수 있게 허가하는 패턴으로, 이렇게 하면 객체는 마치 자신의 클래스를 바꾸는 것처럼 보임 State 패턴으로 refactoring하는 주된 목적은 상태 전이를 위한 조건 로직(if문들)이 지나치게 복잡한 경우 이를 해소하는 것. 상.. 2022. 4. 27.
디자인 패턴 - Composite Pattern 컴포지트 패턴 = 여러개의 객체들로 구성된 복합 객체와 단일 객체를 클라이언트에서 구별없이 다루게 해주는 패턴. (클라이언트가 복합 객체(group of object)나 단일 객체를 동일하게 취급하는 것을 목적으로 함) / 컴포지트의 의도는 계층적으로 구성된 정보를 트리 구조로 작성하여, 전체-부분(whole-part) 관계 표현 / 전체와 부분의 관계를(Directory와 File같은) 갖는 객체들 사이의 관계를 정의할 때 유용함. / 클라이언트는 전체와 부분을 구분하지 않고 동일한 인터페이스 사용 가능. 컴포지트 패턴은 언제 사용하는가 - 복합 객체와 단일 객체의 처리 방법이 다르지 않을 경우, 전체-부분 관계로 정의 가능. 이 관계를 효율적으로 정의할때 유용함. 역할이 수행하는 작업 - Compon.. 2022. 4. 16.
반응형