/\*\*private 생성자와 public static 메소드를 사용하는 방법 \*/public class Settings1 {}문제점멀티 쓰레드를 사용할 시 동시에 조건에 진입하게 되면 두개의 인스턴스가 만들어 지는 문제점 발생문제해결 방법 - 1synchroni
팩토리 메소드(Factory Method)패턴구체적으로 어떤 인스턴스를 만들지는 서브 클래스가 정한다.다양한 구현체(Product)가 있고, 그 중에서 특정한 구현체를 만들 수 있는 다양한 팩토리(Creator)를 제공장점확장에 열려있고 변경에 닫혀있는 객체 지향 원
추상팩토리(Abstract factory) 패턴이란?서로 관련있는 여러 객체를 만들어주는 인터페이스구체적으로 어떤 클래스의 인스터스를 (concrete product)를 사용하는지 감출 수 있다.팩토리 메소드 패턴이랑 비슷하지만 클라이언트에 중점을 맞춰진 패턴 팩토
div { text-align: center; padding: 3em 0;} ※ 사용 예시 flyweight에 해당하는 Font(intrinsit)라는 클래스를 생성하여 Family(글씨체)와 size(글씨 크기) 두개를 정의한다. → 이 두개의 속성은
※ 프록시 패턴(OCP : Open & Close principle) \- 특정한 객체에 접근하기 전에 프록시 객체를 지나서 접근하는 패턴 \- 클라이언트가 원래 사용하려고 했던 클래스를 직접 쓰지 않고, 중간에 프록시를 거쳐서 사용하게 된다.(비서를 거쳐야 사장을
특정한 책임을 가지고 있는 클래스들이 연결되어 있는 구조로 무언가를 처리함요청을 보내는 쪽과 처리하는 쪽을 분리하는 패턴일반적인 코딩으로 패턴을 구성하면 클라이언트가 사용할 핸들러를 알아야만 사용할 수 있는 단점이 존재함→ 책임 연쇄 패턴을 적용하면 클라이언트는 Req
요청을 캡슐화하여 호출자(invoker)와 수신자(receiver)를 분리하는 패턴 요청을 처리하는 방법이 바뀌더라도 호출자의 코드는 변경되지 않는다.코딩을 할때 중복이 되는 비슷한 코드가 생성되는 문제를 해결하기 위해 사용호출자(invoker)와 수신자(receive
자주 등장하는 문제를 간단한 언어로 정의하고 재사용하는 패턴반복되는 문제 패턴을 언어 또는 문법으로 정의하고 확장할 수 있다.요청을 캡슐화 하여 호출자(invoker)와 수신자(receiver)를 분리하는 패턴.
※ subject는 여러 옵저버들을 등록하거나 해지할 수 있는 기능을 제공옵저버 인터페이스 해당(subscriber)ConcreteObserver에 해당간단하게 들어온 메시지를 출력하는 역할만 함subscriber를 구현하는 구현체여러 옵저버들을 등록하거나 해지할 수
특정한 상태에 따라 행동이 달라지는 객체들을 위한 패턴 ex) 리모컨(TV가 꺼저 있냐 켜져 있냐에 따라 버튼의 동작이 달라짐) ※ 상태마다 다르게 적용하는 오퍼레이션일 때 상태 패턴을 적용하기가 적합하다
여러 알고리즘을 캡슐화하고 상호 교환 가능하게 만드는 패턴자바 개발자가 가장 자주 쓰는 패턴컨텍스트에서 사용할 알고리즘을 클라이언트가 선택한다.새로운 전략을 추가하더라도 기존 코드를 변경하지 않는다.(OCP)상속 대신 위임을 사용할 수 있다. 런타임에 전략을 변경할 수
서로 관련 있는 여러 객체를 만들어주는 인터페이스인터페이스로 정의하거나 추상 팩토리로 정의할 수 있음※ 인스턴스 : 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체. 즉, 객체를 스프트웨어에 실체화하면 그것을 '인스턴스'라고 부른다.기존 코드는 클라이언트가 실
빌더 패턴
기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법(재활용, 프로토 타입)clone으로 복제를 해서 사용하면 동일한 작업을 반복하지 않아도 된다.인스턴스를 만들 때 시간이 오래 걸리는 작업 등(데이터베이스를 읽어오거나, 네트워크를 거쳐서 가져온 데이터를 기반으로 데
복잡한 서브 시스템 의존성을 최소화하는 방법클라이언트가 사용해야 하는 복잡한 서브 시스템 의존성을 간단한 인터페이스로 추상화 할 수 있다. 서브 시스템에 대한 의존성을 한곳으로 모을 수 있다.퍼사드 클래스가 서브 시스템에 대한 모든 의존성을 가지게 된다.
객체를 가볍게 만들어 메모리 사용을 줄이는 패턴자주 변하는 속성(또는 외적인 속성, extrinsit)과 변하지 않는 속성(또는 내적인 속성, intrinsit)을 분리하고 재사용하여 메모리 사용을 줄일 수 있다.자주 변하지 않는 것들을 모아둔 것이 플라이웨이트.애플리