본문 바로가기
반응형

{ Development, Architecture }/Design Pattern14

[디자인 패턴] Proxy Pattern 프록시 패턴 Proxy Pattern Definition 프록시 패턴은 어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴입니다. Structure Types 프록시 패턴은 다양하게 활용이 될 수 있습니다. 원격 프록시는 원격 객체에 대한 접근을 제어할 수 있습니다. 가상 프록시는 생성하기 힘든 자원에 대한 접근을 제어할 수 있습니다. 보호 프록시는 접근 권한이 필요한 자원에 대한 접근을 제어할 수 있습니다. Source Code 이번 예제에서는 가장 간단한 프록시 패턴 형태만을 살펴보겠습니다. 가장 먼저 Subject 인터페이스를 만들어줍니다. 여기선 IService가 Subject 인터페이스에 해당합니다. package proxy_pattern; public inter.. 2021. 12. 1.
[디자인 패턴] State Pattern 스테이트 패턴 State Pattern Introduction 게시물의 좋아요/싫어요 버튼 기능을 만들어봅시다! Definition 스테이트 패턴을 이용하면 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있습니다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있습니다. Structure 스테이트 패턴은 전략 패턴과 동일한 구조를 가집니다. Source Code 게시물에 좋아요/싫어요 기능을 만들어봅시다. 우선 게시물 클래스를 만들어줍니다. 스테이트 패턴의 Context 클래스에 해당합니다. package state_pattern; public class Article { State state = new IdleState(); public void setState(State state) { this.. 2021. 12. 1.
[디자인 패턴] Composite Pattern 컴포지트 패턴 Composite Pattern Definition 컴포지트 패턴을 이용하면 객체들을 트리구조로 구성하여 부분과 전체를 나타내는 계층구조를 만들 수 있습니다. 이 패턴을 이용하면 클라이언트는 개별 객체와 복합 객체(collection)를 똑같은 방식으로 다룰 수 있습니다. Structure Source Code 가장 먼저 Component 인터페이스를 만들어줍니다. package composite_pattern; public interface Component { public void getInfo(); } 그리고 Leaf 객체를 만들어줍니다. 여기선 File에 해당합니다. package composite_pattern; public class File implements Component { Strin.. 2021. 12. 1.
[디자인 패턴] Iterator Pattern 이터레이터 패턴 Iterator Pattern Introduction 이씨는 가족 전화번호부와 친구 전화번호부를 갖고 있습니다. 이들 목록을 보려고 합니다. Definition 이터레이터 패턴은 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있는 방법을 제공해줍니다. Structure Aggregate는 집합이라는 의미를 가지고 있습니다. Aggregate 인터페이스는 createIterator()라는 추상메서드를 가지고 있습니다. ConcreteAggregate 클래스에서 createIterator() 메서드를 구현해야 합니다. Source Code 가장 먼저, 이번 프로젝트에 쓰일 기본 객체를 만들어줍니다. Phone 객체를 만들고 설정합니다. package iterator.. 2021. 12. 1.
[디자인 패턴] Template Method Pattern 템플릿 메서드 패턴 Template Method Pattern Introduction 운동을 좋아하는 이씨는 축구 배우기 수업을 등록했습니다. 강의는 짜여진 루틴대로 진행이 됩니다. 요일마다 슈팅연습, 패스연습을 번갈아 가며 진행합니다. Definition 템플릿 메서드 패턴에서는 메서드에서 알고리즘의 골격을 정의합니다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있습니다. 이때 알고리즘의 구조를 유지하며 서브클래스에서 특정 단계를 재정의할 수 있습니다. Structure Source code 먼저 추상 클래스를 만들어줍니다. 이때 이 클래스 안에 템플릿 메서드를 만들어주면 됩니다. 여기서 추상 메서드로 선언된 메서드들은 서브클래스에서 구현되어야 합니다. package template_method_patter.. 2021. 12. 1.
[디자인 패턴] Facade Pattern 퍼사드 패턴 Facade Pattern Definition 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공합니다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있습니다. Structure Source Code 영화를 보는 데에 필요한 음료, 리모컨, 영화에 대한 각각의 클래스를 만들고 기능을 설정해줍니다. package facade_pattern; public class Beverage { private String beverageName; public Beverage(String beverageName) { this.beverageName = beverageName; } public void prepare() { System.out.println("음료 "+be.. 2021. 12. 1.
반응형