본문 바로가기

전체 글39

브리지(Bridge) 패턴 - 구조 패턴 (Structural Patterns) 브리지 패턴은 추상화와 구현을 분리하여 둘을 독립적으로 확장할 수 있도록 하는 디자인 패턴이다.  여러 모양과 색상이 있다고 가정해보자. 빨간색 원파란색 사각형 모양과 색상을 조합하는 모든 경우를 각각 클래스로 정의하면 클래스의 수가 기하급수적으로 늘어난다.브리지 패턴을 사용해서 모양과 색상을 분리하고 이들을 독립적으로 확장 할 수 있도록 해보자. Shape 클래스는 추상화 역할을 한다.// Shape 클래스: 추상화 역할abstract class Shape { protected Color color; protected Shape(Color color) { this.color = color; } public abstract void draw();} Color 인터페이스는.. 2024. 5. 23.
어댑터(Adapter) 패턴 - 구조 패턴 (Structural Patterns) 어댑터 패턴은 두개의 서로 호환되지 않는 인터페이스를 가진 클래스들이 함께 동작 할 수 있도록 중간에 어댑터 역할을 하는 클래스를 두는 디자인 패턴이다. 간단한 예시로는 전기 어댑터를 살펴보면 좋다. 한국에서는 220V 콘센트를 사용하는데 미국에서는 110V콘센트를 사용한다. 이때 한국에서 가지고간 220V 전자 제품을 미국에서 사용하고 싶다면 어댑터를 사용하는것이다. // V220Socket 인터페이스: 220V 소켓public interface V220Socket { void connect();} // V220Appliance 클래스: 220V 전자 기기public class V220Appliance implements V220Socket { @Override public void c.. 2024. 5. 16.
프로토타입(Prototype) - 생성 패턴(Creational Patterns) 프로토타입 패턴은 개체를 생성하는 디자인 패턴이다. 새로운 개체를 만들기 위해 기존의 개체를 복제하는 방법을 사용하는데 특히 개체 생성 과정이 복잡하거나 자원을 많이 소모할 때 유용하게 사용할 수 있다.기존에 만들어진 개체를 사용하여 새로운 개체를 생성하는 게 핵심인데 복제한 개체의 프로토타입(원본)을 가지고 있고, 이 원본 개체를 복제함으로써 새로운 개체를 빠르고 효율적으로 생성할 수 있다.  프로토타입 개체 정의 : 복제될 개체의 원분이 되는 프로토타입 개체를 정의한다. 이 개체는 모든 상태와 데이터를 가지고 있어야 하며, 자신을 복제할 수 있는 메커니즘을 제공해야 한다.  복제(클로닝) 메서드 : 프로토타입 개체는 자신의 복사본을 만들어 반환할 수 있는 clone() 메서드 같은 복제 메커니즘을 제.. 2024. 5. 15.
네 번째, 블로그를 하다 보니 2024년부터 블로그를 본격적으로 하고 있다.사실 크게 의미를 두지 않고 그냥 공부하면 글을 쓰고 물건을 사서 재미있으면 리뷰를 쓰고 뭐 이렇게 하려고 했다. 그런데 생각보다 글의 양이 많아지니 카테고리 정리가 필요하게 되었다. 다른 블로그는 어떤지 모르겠는데 티스토리는 카테고리가 2 뎁스까지라 정리가 쉽지 않다. 물론 내 블로그는 개발자 블로그로 볼 수도 있고... 그냥 일상을 남기는 어느 30대의 아저씨블로그로 볼 수 있다.앞으로도 티스토리로 블로그를 하는 게 맞는지 대체수단은 없는지 생각해 봐야겠다.수익을 내거나 하려는 게 아니라 태그도 넣지 않고 광고도 붙이지 않고 자기만족으로 시작한 블로그인데 생각만큼 자유롭지 않은 환경인 것 같아 아쉬움이 조금 있는듯하다. 블로그 명칭도 고민이다. 소소한 엔지.. 2024. 5. 15.
빌더(Builder) - 생성 패턴(Creational Patterns) 빌더 패턴은 개체의 생성 과정을 단계별로 분할하고, 그 과정을 캡슐화하여 복잡한 개체를 조립할 수 있게 도와주는 패턴이다. 이 패턴은 특히 복잡한 구성을 가진 개체를 생성할 때 유용하다. 동일한 생성 과정을 통해 다양한 표현과 구성의 개체를 만들 수 있다.  이 패턴의 구성을 먼저 보자  Builder : 개체의 여러 부분을 생헝하는 방법을 정의한 인터페이스이다. 여러단계에 걸쳐 복잡한 개체의 각 부분을 어떻게 생성할지 대한 세부사항을 포함한다. Concrete Builder : Builder 인터페이스를 구현하며, 구체적인 개체의 부품을 조립하는 방법과 최종 개체를 반환하는 메서드를 포함한다.  Director : Builder 인터페이스를 사용해 개체를 단계뼐로 생한다. Director는 어떤 순서로.. 2024. 5. 14.