반응형 Development, Architecture30 [디자인 패턴] 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. [디자인 패턴] Adapter Pattern 어댑터 패턴 Adapter Pattern Introduction 한국인 김씨는 길을 걷던 도중, 한국을 여행 중인 일본인 고쿠과 마주쳤습니다. 일본인 고쿠는 김씨에게 길을 물어보고, 김씨는 번역기를 사용해 소통을 하고자 합니다. Definition 어댑터 패턴은 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환합니다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있습니다. Structure 현재 상황에서 한국어 인터페이스가 Target이고 일본어 인터페이스가 Adaptee가 됩니다. Source code 한국어 인터페이스를 만들어줍니다.(Target) package adapter_pattern; public interface Korean {.. 2021. 12. 1. [디자인 패턴] Command Pattern 커맨드 패턴 Command Pattern Introduction 이씨의 집에는 만능 리모컨이 있습니다. 이 리모컨으로 전등을 키고 끄는 것은 물론, 텔레비젼을 키고 끌 수도 있습니다. 이 만능 리모컨은 차후 발전하여 더 많은 기기에 명령을 내릴 수 있습니다. Definition 명령을 객체로 캡슐화할 수 있으며, 매개변수를 통해 여러가지 다른 요구사항도 집어넣을 수 있습니다. 또한 요청 내역을 큐에 저장하고나 로그를 기록할 수도 있습니다. Structure 주어진 상황에서, 다음과 같이 비유될 수 있습니다. Receiver - 전등, 컴퓨터와 같이 명령을 직접 수행할 수 있는 객체. Invoker - 리모컨(리시버로 하여금 명령을 수행하도록 지시) Client - 리모컨을 조종하는 이씨. Source code 전등 .. 2021. 12. 1. 이전 1 2 3 4 5 다음 반응형