먼저 객체지향 소프트웨어를 잘 설계하려면 어떻게 해야할까? 객체지향 언어를 사용하여 개발하고 있다면 항상 고민하는 문제입니다.자바에대해 공부하다 보면 객체지향의 원칙(SOLID)을 잘 지킨 설계를 하기 위해 끊임없이 노력합니다.또, 우리가 개발하다보면 자신이 전에 사용
싱글톤 패턴의 정의는 객체의 인스턴스를 오직 1개만 생성하고 생성된 객체를 어디서든지 참조할 수 있도록 하는 패턴이다. 최초 한번의 new 연산자를 통해서 고정된 메모리 영역을 사용하기 때문에 메모리 낭비를 방지할 수 있다.다른 클래스간의 데이터 공유가 쉽다.priv
팩토리 메서드 패턴은 객체 생성 처리를 서브 클래스로 분리하여 처리하도록 캡슐화 하는 패턴입니다.즉, 구체적으로 어떤 인스턴스를 만들지는 서브클래스가 정해주는 패턴이라고 생각하면 됩니다.다양한 구현체(Product)가 있고, 그 중에서 특정한 구현체를 만들 수 있는 다
빌더패턴이란 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법입니다.생성해야하는 클래스에 대한 속성값이 많을때 타입, 순서 등에 대한 관리가 어려워져 실수가 발생할 확률이 높아지고 경우에 따라 필요없는 파라미터들에 대해서는 null값을 넘겨줘야하는 번거로움이
프로토타입은 실제 제품을 만들기에 앞서 대략적인 샘플정도의 의미로 사용되는 단어입니다.프로토타입 패턴은 객체를 생성하는 비용이 많이 들고, 비슷한 객체가 이미 있는 경우 사용되는 생성패턴 중 하나입니다.즉, 프로토타입 패턴은 원본 객체를 새로운 객체에 복사하여 필요에
실생활에서 어댑터는 무엇인지 생각해봅시다.110v를 220v로 변경해주는 변환기를 예로 들 수 있습니다.프로그래밍에서의 어댑터 패턴은 기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴입니다.더 나아가 인터페이스가 바뀌더라도 그 변경 내역은 어댑터에
브릿지 패턴이란 구현부에서 추상층을 분리하여 각자 독립적으로 변형이 가능하고 확장이 가능하도록 하는 패턴입니다.쉽게말해서 추상적인 것과 구체적인 것을 분리하여 연결하는 패턴입니다.브릿지 패턴 클래스의 다이어그램은 아래와 같습니다.Abstraction기능 계층의 최상위
컴포짓 패턴은 구조패턴 중 하나로 클라이언트 입장에서는 '전체'나 '부분'이나 모두 동일한 컴포넌트로 인식할 수 있는 계층구조를 만든다.의도는 트리 구조로 작성하여, 부분-전체 관계(Part-Whole Hierarchy)를 표현하는 것입니다.컴포짓 패턴의 구조는 아래와
기존 코드를 변경하지 않고 부가 기능을 추가하는 패턴으로 상속이 아닌 위임을 사용해서 보다 유연하게(런타임에) 부가기능을 추가하는 것도 가능하다.즉, 기본 기능에 추가할 수 있는 기능의 종류가 많은 경우에 각 추가 기능을 Decorator클래스로 정의 한 후 필요한 D
퍼사드 패턴이란 복잡한 서브 시스템 의존성을 최소화하는 패턴입니다.서브 시스템에 있는 인터페이스들에 대한 통합 인터페이스를 제공하여 서브 시스템을 더 쉽게 사용할 수 있도록 만드는 더 높은 수준의 인터페이스를 말합니다.이메일 발송로직을 예로 들어봅시다.위와 같이 이메일
플라이웨이트 패턴은 어떤 클래스의 인스턴스 한 개만 가지고 여러 개의 가상 인스턴스를 제공하여 객체를 가볍게 만들어 메모리 사용을 줄이는 패턴입니다.자주 변하는 속성(또는 외적인 속성, extrinsit)과 변하지 않는 속성(또는 내적인 속성, instrinsit)을
추상팩토리 패턴은 서로 관련있는 여러 객체를 만들어주는 인터페이스를 제공하는 패턴입니다.즉, 관련성 있는 여러 종류의 객체를 일관된 방식으로 생성하는 경우 사용됩니다.추상팩토리 패턴을 사용하면 구체적으로 어떤 클래스의 인스턴스를 사용하는지 클라이언트에게 감출 수 있습니